此文件包含用於顯示數據列表經常使用的類和工具類。不只能夠方便的用於顯示基於模型(Model)的數據列表,也能夠用於顯示自定義數據列表。html
此圖中綠色部分屬於base.py,引入此圖中是爲了說明他們之間的關係算法
最主要的核心工具類,主要的算法和接口所有都在這個工具類中實現。app
allow_empty 默認值True。表示沒有數據時顯示空列表;不然將會產生一個404錯誤。函數
queryset 產生數據的queryset實例或"類queryset"數據列表。工具
model 關聯的模型類。設計
paginated_by 分頁的每頁數據項數。默認不起用分頁。htm
context_object_name 保存到context中的對象名稱。默認是$(model)_list。對象
paginator_class 默認值Paginator。分頁處理器。繼承
get_queryset 獲取用於數據顯示的列表對象。能夠是類queryset對象。此方法優先選擇使用queryset屬性。未提供queryset屬性時,返回model的默認管理器。若是也沒有提供model屬性,將會產生ImproperlyConfigured異常。接口
paginate_queryset 根據須要,將queryset分頁。返回(paginator, page, page.object_list, page.has_other_pages())
get_paginate_by 返回每頁數據項數。None表示不分頁。
get_paginator 返回分頁器
get_allow_empty 參見allow_empty屬性說明
get_context_object_name 參見context_object_name屬性說明
get_context_data 設置視圖的附加屬性。一般重寫此方法來爲視圖提供附加數據。 默認設計的視圖數據:
'paginator': 分頁器, 'page_obj': 頁對象, 'is_paginated': 是否進行了分頁, 'object_list': 視圖的數據
視圖列表基類。繼承自MutipleObjectMixin和View。這是一個抽象類。此函數經過增長get方法來整合View的處理流程和MutipleObjectMixin提供的工具函數。
繼承自TemplateResponseMixin,並重寫get_template_names方法。追加$(app_label)/$(model)_list.html做爲默認模板。
本模塊功能集大成者。通常都是直接繼承此類,並重寫MutipleObjectMixin的一些默認屬性和/或方法來實現需求。
此類繼承自MultipleObjectTemplateResponseMixin和BaseListView。通常來講,只需提供model屬性,並編寫$(model)_list.html便可實現數據列表功能。如需分頁能夠重寫paginated_by屬性,指定每頁數據項數目。