多物件 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

model

此視圖將顯示其資料的模型。指定 model = Foo 實際上等同於指定 queryset = Foo.objects.all(),其中 objects 代表 Foo預設管理員

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()

取得此視圖的項目列表。這必須是可迭代的,並且可以是查詢集 (將會啟用查詢集特定的行為)。

get_ordering()

返回一個字串 (或字串的迭代器),定義將會應用於 queryset 的排序。

預設返回 ordering

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

返回頂部