基於日期的 Mixins¶
注意
這些 mixin 中所有日期格式化屬性都使用 strftime()
格式字元。請勿嘗試使用 now
範本標籤的格式字元,因為它們不相容。
YearMixin
¶
- class YearMixin[原始碼]¶
一個可以被用來檢索和提供日期中的年份元件的解析資訊的 mixin。
方法和屬性
- year_format¶
解析年份時要使用的
strftime()
格式。預設情況下,這是'%Y'
。
- year¶
可選的,年份的值,為字串。預設為
None
,這表示年份將透過其他方式確定。
- get_year_format()[原始碼]¶
傳回解析年份時要使用的
strftime()
格式。預設情況下傳回year_format
。
- get_year()[原始碼]¶
傳回此檢視將顯示資料的年份,為字串。依序嘗試以下來源:
YearMixin.year
屬性的值。在 URL 模式中捕獲的
year
參數的值。year
GET
查詢參數的值。
如果找不到有效的年份規範,則會引發 404 錯誤。
- get_next_year(date)[原始碼]¶
傳回一個日期物件,其中包含所提供日期之後一年的第一天。此函式也可以傳回
None
或引發Http404
例外,具體取決於allow_empty
和allow_future
的值。
- get_previous_year(date)[原始碼]¶
傳回一個日期物件,其中包含所提供日期之前一年的第一天。此函式也可以傳回
None
或引發Http404
例外,具體取決於allow_empty
和allow_future
的值。
MonthMixin
¶
- class MonthMixin[原始碼]¶
一個可以被用來檢索和提供日期中的月份元件的解析資訊的 mixin。
方法和屬性
- month_format¶
解析月份時要使用的
strftime()
格式。預設情況下,這是'%b'
。
- month¶
可選的,月份的值,為字串。預設為
None
,這表示月份將透過其他方式確定。
- get_month_format()[原始碼]¶
傳回解析月份時要使用的
strftime()
格式。預設情況下傳回month_format
。
- get_month()[原始碼]¶
傳回此檢視將顯示資料的月份,為字串。依序嘗試以下來源:
MonthMixin.month
屬性的值。在 URL 模式中捕獲的
month
參數的值。month
GET
查詢參數的值。
如果找不到有效的月份規範,則會引發 404 錯誤。
- get_next_month(date)[原始碼]¶
傳回一個日期物件,其中包含所提供日期之後一個月的第一天。此函式也可以傳回
None
或引發Http404
例外,具體取決於allow_empty
和allow_future
的值。
- get_previous_month(date)[原始碼]¶
傳回一個日期物件,其中包含所提供日期之前一個月的第一天。此函式也可以傳回
None
或引發Http404
例外,具體取決於allow_empty
和allow_future
的值。
DayMixin
¶
- class DayMixin[原始碼]¶
一個可以被用來檢索和提供日期中的日元件的解析資訊的 mixin。
方法和屬性
- day_format¶
解析日期時要使用的
strftime()
格式。預設情況下,這是'%d'
。
- day¶
可選的,日期的值,為字串。預設為
None
,這表示日期將透過其他方式確定。
- get_day_format()[原始碼]¶
傳回解析日期時要使用的
strftime()
格式。預設會傳回day_format
。
- get_day()[原始碼]¶
以字串形式傳回此視圖將顯示資料的日期。依序嘗試下列來源:
DayMixin.day
屬性的值。在 URL 模式中捕獲的
day
引數的值。day
GET
查詢引數的值。
如果找不到有效的日期規格,則引發 404 錯誤。
- get_next_day(date)[原始碼]¶
傳回一個日期物件,其中包含所提供日期之後的下一個有效日期。此函式也可能會傳回
None
或引發Http404
例外,具體取決於allow_empty
和allow_future
的值。
- get_previous_day(date)[原始碼]¶
傳回一個日期物件,其中包含前一個有效日期。此函式也可能會傳回
None
或引發Http404
例外,具體取決於allow_empty
和allow_future
的值。
WeekMixin
¶
- class WeekMixin[原始碼]¶
一個 mixin,可用於擷取和提供日期中星期部分的解析資訊。
方法和屬性
- week_format¶
解析星期時要使用的
strftime()
格式。預設情況下,此格式為'%U'
,表示星期從星期日開始。如果您的星期從星期一開始,請將其設定為'%W'
或'%V'
(ISO 8601 週)。
- week¶
選用 以字串形式表示星期數的值。預設情況下,設定為
None
,表示將使用其他方式確定星期。
- get_week_format()[原始碼]¶
傳回解析星期時要使用的
strftime()
格式。預設會傳回week_format
。
- get_week()[原始碼]¶
以字串形式傳回此視圖將顯示資料的星期。依序嘗試下列來源:
WeekMixin.week
屬性的值。在 URL 模式中捕獲的
week
引數的值。week
GET
查詢引數的值。
如果找不到有效的星期規格,則引發 404 錯誤。
- get_next_week(date)[原始碼]¶
傳回一個日期物件,其中包含所提供日期之後的星期第一天。此函式也可能會傳回
None
或引發Http404
例外,具體取決於allow_empty
和allow_future
的值。
- get_prev_week(date)¶
傳回一個日期物件,其中包含所提供日期之前的星期第一天。此函式也可能會傳回
None
或引發Http404
例外,具體取決於allow_empty
和allow_future
的值。
DateMixin
¶
- class DateMixin[原始碼]¶
一個 mixin 類別,為所有基於日期的視圖提供常見行為。
方法和屬性
- date_field¶
QuerySet
模型中DateField
或DateTimeField
的名稱,基於日期的封存應使用該名稱來確定要在頁面上顯示的物件清單。當啟用 時區支援 且
date_field
為DateTimeField
時,日期將被假定為當前時區。否則,查詢集可能會包含來自最終使用者時區中前一天或後一天的物件。警告
在這種情況下,如果您已實作了每個使用者的時區選擇,則相同的 URL 可能會根據終端使用者的時區顯示不同的物件集合。為了避免這種情況,您應該使用
DateField
作為date_field
屬性。
- allow_future¶
一個布林值,指定是否在此頁面包含「未來」物件,其中「未來」表示
date_field
中指定的欄位大於目前日期/時間的物件。預設值為False
。
- get_date_field()[原始碼]¶
傳回包含此視圖將操作的日期資料的欄位名稱。預設情況下傳回
date_field
。
- get_allow_future()[原始碼]¶
判斷是否在此頁面包含「未來」物件,其中「未來」表示
date_field
中指定的欄位大於目前日期/時間的物件。預設情況下傳回allow_future
。
BaseDateListView
¶
- class BaseDateListView[原始碼]¶
一個基礎類別,為所有基於日期的視圖提供通用行為。通常不會有理由實例化
BaseDateListView
;而是實例化其中一個子類別。當此視圖(及其子類別)正在執行時,
self.object_list
將包含視圖正在操作的物件列表,而self.date_list
將包含可用資料的日期列表。混入 (Mixins)
方法和屬性
- allow_empty¶
一個布林值,指定在沒有可用物件時是否顯示頁面。如果此值為
True
且沒有可用的物件,則視圖將顯示一個空白頁面,而不是引發 404 錯誤。這與
django.views.generic.list.MultipleObjectMixin.allow_empty
相同,只是預設值為False
。
- date_list_period¶
可選 一個字串,定義
date_list
的彙總期間。它必須是'year'
(預設值)、'month'
或'day'
其中之一。
- get_dated_items()[原始碼]¶
傳回一個包含 (
date_list
、object_list
、extra_context
) 的 3 元組。date_list
是可使用資料的日期列表。object_list
是物件列表。extra_context
是一個上下文資料字典,將會被添加到MultipleObjectMixin
提供的任何上下文資料中。
- get_dated_queryset(**lookup)[原始碼]¶
傳回一個 queryset,使用
lookup
定義的查詢參數進行篩選。強制執行對 queryset 的任何限制,例如allow_empty
和allow_future
。
- get_date_list_period()[原始碼]¶
傳回
date_list
的彙總期間。預設情況下傳回date_list_period
。
- get_date_list(queryset, date_type=None, ordering='ASC')[原始碼]¶
傳回
queryset
包含條目的date_type
類型的日期列表。例如,get_date_list(qs, 'year')
將傳回qs
有條目的年份列表。如果沒有提供date_type
,則使用get_date_list_period()
的結果。date_type
和ordering
會傳遞到QuerySet.dates()
。