多物件 Mixin¶
MultipleObjectMixin
¶
- class django.views.generic.list.MultipleObjectMixin¶
一個可用於顯示物件列表的 mixin。
如果指定了
paginate_by
,Django 將會分頁返回的結果。您可以在 URL 中用兩種方式之一指定頁碼在 URLconf 中使用
page
參數。例如,這是您的 URLconf 可能的樣子path("objects/page<int:page>/", PaginatedView.as_view()),
透過
page
查詢字串參數傳遞頁碼。例如,一個 URL 看起來會像這樣/objects/?page=3
這些數值和列表都是從 1 開始,而不是從 0 開始,所以第一頁將會被表示為頁碼
1
。關於分頁的更多資訊,請閱讀分頁文件。
作為一個特例,您也可以使用
last
作為page
的值/objects/?page=last
這讓您可以存取最後一頁的結果,而無需事先確定有多少頁。
請注意,
page
*必須* 是有效的頁碼或值last
;任何其他page
的值都會導致 404 錯誤。繼承自
方法和屬性
- allow_empty¶
一個布林值,指定在沒有可用的物件時是否顯示該頁面。如果這是
False
且沒有可用的物件,視圖將會引發 404 錯誤,而不是顯示一個空白頁面。預設情況下,這是True
。
- queryset¶
一個表示物件的
QuerySet
。如果提供了,queryset
的值會取代為model
提供的的值。警告
queryset
是一個具有*可變*值的類別屬性,因此直接使用時必須小心。在使用它之前,請呼叫其all()
方法,或使用get_queryset()
來檢索它,它會在幕後處理複製。
- ordering¶
一個字串或字串列表,指定要應用於
queryset
的排序。有效值與order_by()
的相同。
- paginate_by¶
一個整數,指定每頁應顯示多少物件。如果給定此值,視圖將會使用每頁
paginate_by
個物件來分頁物件。視圖將會預期在查詢字串參數中 (透過request.GET
) 或 URLconf 中指定的page
變數中找到page
。
- paginate_orphans¶
一個整數,指定最後一頁可以包含的「溢出」物件數量。這將最後一頁的
paginate_by
限制擴展最多paginate_orphans
,以避免最後一頁只有非常少量的物件。
- page_kwarg¶
一個字串,指定頁面參數的名稱。視圖將會預期此參數可以作為查詢字串參數 (透過
request.GET
) 或作為 URLconf 中指定的 kwarg 變數取得。預設為page
。
- paginator_class¶
用於分頁的分頁器類別。預設情況下,會使用
django.core.paginator.Paginator
。如果自訂的分頁器類別沒有與django.core.paginator.Paginator
相同的建構函式介面,您還需要為get_paginator()
提供實作。
- context_object_name¶
指定要在 context 中使用的變數名稱。
- get_queryset()¶
取得此視圖的項目列表。這必須是可迭代的,並且可以是查詢集 (將會啟用查詢集特定的行為)。
- paginate_queryset(queryset, page_size)¶
返回一個包含 (
paginator
,page
,object_list
,is_paginated
) 的 4 元組。透過將
queryset
分頁成大小為page_size
的頁面來建構。如果請求包含page
參數,無論是作為捕獲的 URL 參數還是作為 GET 參數,object_list
都會對應於該頁面的物件。
- get_paginate_by(queryset)¶
傳回分頁的項目數量,若不分頁則傳回
None
。預設情況下,這會傳回paginate_by
的值。
- get_paginator(queryset, per_page, orphans=0, allow_empty_first_page=True)¶
傳回用於此檢視的分頁器實例。預設情況下,會實例化
paginator_class
的實例。
- get_paginate_orphans()¶
一個整數,指定最後一頁可以包含的「溢出」物件數量。預設情況下,這會傳回
paginate_orphans
的值。
- get_allow_empty()¶
傳回一個布林值,指定在沒有物件可用的情況下是否顯示頁面。如果此方法傳回
False
且沒有物件可用,檢視將會引發 404 錯誤,而不是顯示空白頁面。預設情況下,此值為True
。
- get_context_object_name(object_list)¶
傳回將用於包含此檢視正在操作的資料列表的上下文變數名稱。如果
object_list
是 Django 物件的查詢集,且未設定context_object_name
,則上下文名稱將會是構成查詢集的模型的model_name
,並附加後綴'_list'
。例如,模型Article
將會有名為article_list
的上下文物件。
- get_context_data(**kwargs)¶
傳回用於顯示物件列表的上下文資料。
上下文
object_list
: 此檢視正在顯示的物件列表。如果指定了context_object_name
,該變數也將設定在上下文中,其值與object_list
相同。is_paginated
: 代表結果是否分頁的布林值。具體而言,如果未指定頁面大小,或者可用物件未跨越多個頁面,則會將此值設定為False
。paginator
:django.core.paginator.Paginator
的實例。如果頁面未分頁,此上下文變數將會是None
。page_obj
:django.core.paginator.Page
的實例。如果頁面未分頁,此上下文變數將會是None
。
MultipleObjectTemplateResponseMixin
¶
- class django.views.generic.list.MultipleObjectTemplateResponseMixin¶
一個混入類別,用於對操作物件實例列表的檢視執行基於範本的回應渲染。它要求與之混入的檢視提供
self.object_list
,即檢視正在操作的物件實例列表。self.object_list
可以是(但非必要)QuerySet
。繼承自
方法和屬性
- template_name_suffix¶
要附加到自動產生候選範本名稱的後綴。預設後綴為
_list
。
- get_template_names()¶
傳回候選範本名稱的列表。傳回以下列表
檢視上的
template_name
值(如果提供)<app_label>/<model_name><template_name_suffix>.html