Tampilan umum berdasarkan-tanggal, disediakan di django.views.generic.dates
, adalah tampilan untuk menampilkan halaman-halaman penelusuran untuk data berdasarkan-tanggal.
Catatan
Beberapa dari contoh-contoh pada halaman ini menganggap bahwa sebuah model Article
telah ditentukan sebagai berikut di myapp/models.py
:
from django.db import models
from django.urls import reverse
class Article(models.Model):
title = models.CharField(max_length=200)
pub_date = models.DateField()
def get_absolute_url(self):
return reverse('article-detail', kwargs={'pk': self.pk})
ArchiveIndexView
¶ArchiveIndexView
[sumber]¶Halaman indeks tingkat-atas menampilkan obyek "latest", berdasarkan tanggal. Obyek dengan sebuah tanggal di future tidak disertakan meskipun anda menyetel allow_future
menjadi True
.
Ancestors (MRO)
django.views.generic.list.MultipleObjectTemplateResponseMixin
django.views.generic.base.TemplateResponseMixin
django.views.generic.dates.BaseArchiveIndexView
django.views.generic.dates.BaseDateListView
django.views.generic.list.MultipleObjectMixin
django.views.generic.dates.DateMixin
django.views.generic.base.View
Konteks
Sebagai tambahan pada konteks disediakan oleh django.views.generic.list.MultipleObjectMixin
(melalui django.views.generic.dates.BaseDateListView
), konteks cetakan akan menjadi:
date_list
: Sebuah obyek QuerySet
mengandung semua tahun yang mempunyai obyek-obyek tersedia menurut pada queryset
, diwakili sebagai obyek datetime.datetime
, dalam urutan menurun.Catatan
context_object_name
awal dari latest
.template_name_suffix
awal dari _archive
.date_list
berdasarkan tahun, tetapi ini dapat dirubah menjadi bulan atau hari menggunakan atribut date_list_period
. Ini juga memberlakukan ke semua tampilan subkelas.Contoh myapp/urls.py:
from django.urls import path
from django.views.generic.dates import ArchiveIndexView
from myapp.models import Article
urlpatterns = [
path('archive/',
ArchiveIndexView.as_view(model=Article, date_field="pub_date"),
name="article_archive"),
]
Contoh myapp/article_archive.html:
<ul>
{% for article in latest %}
<li>{{ article.pub_date }}: {{ article.title }}</li>
{% endfor %}
</ul>
Ini akan mengeluarkan semua artikel.
YearArchiveView
¶YearArchiveView
[sumber]¶Halaman arsip tahunan menampilkan semua bulan tersedia di tahun yang diberikan. Obyek-obyek dengan tanggal future tidak ditampilkan meskipun anda menyetel allow_future
menjadi True
.
Ancestors (MRO)
django.views.generic.list.MultipleObjectTemplateResponseMixin
django.views.generic.base.TemplateResponseMixin
django.views.generic.dates.BaseYearArchiveView
django.views.generic.dates.YearMixin
django.views.generic.dates.BaseDateListView
django.views.generic.list.MultipleObjectMixin
django.views.generic.dates.DateMixin
django.views.generic.base.View
make_object_list
¶Sebuah boolean menentukan apakah mengambil daftar penuh dari obyek-obyek untuk tahun ini dan melewatkan itu ke cetakan. Jika True
, daftar dari obyek-obyek akan dibuat tersedia ke konteks. Jika False
, queryset None
akan digunakan sebagai daftar obyek. Secara awalan, ini adalah False
.
get_make_object_list
()¶Menentukan jika sebuah daftar obyek akan dikembalikan sebagai bagian dari konteks. Mengembalikan make_object_list
secara awalan.
Konteks
Sebagai tambahan pada konteks disediakan oleh django.views.generic.list.MultipleObjectMixin
(melalui django.views.generic.dates.BaseDateListView
), konteks cetakan akan menjadi:
date_list
: Sebuah obyek QuerySet
mengandung semua bulan yang mempunyai obyek-obyek tersedia menurut pada queryset
, diwakili sebagai obyek datetime.datetime
, dalam urutan menaik.year
: Sebuah obyek date
mewakili tahun yang diberikan.next_year
: Sebuah obyek date
mewakili hari pertama dari tahun selanjutnya menurut allow_empty
dan allow_future
.previous_year
: Sebuah obyek date
mewakili hari pertama dari tahun sebelumnya, menurut allow_empty
dan allow_future
.Catatan
template_name_suffix
awal dari _archive_year
.Contoh myapp/views.py:
from django.views.generic.dates import YearArchiveView
from myapp.models import Article
class ArticleYearArchiveView(YearArchiveView):
queryset = Article.objects.all()
date_field = "pub_date"
make_object_list = True
allow_future = True
Contoh myapp/urls.py:
from django.urls import path
from myapp.views import ArticleYearArchiveView
urlpatterns = [
path('<int:year>/',
ArticleYearArchiveView.as_view(),
name="article_year_archive"),
]
Contoh myapp/article_archive_year.html:
<ul>
{% for date in date_list %}
<li>{{ date|date }}</li>
{% endfor %}
</ul>
<div>
<h1>All Articles for {{ year|date:"Y" }}</h1>
{% for obj in object_list %}
<p>
{{ obj.title }} - {{ obj.pub_date|date:"F j, Y" }}
</p>
{% endfor %}
</div>
MonthArchiveView
¶MonthArchiveView
[sumber]¶Halaman arsip tahunan menampilkan semua obyek di tahun yang diberikan. Obyek-obyek dengan tanggal future tidak ditampilkan meskipun anda menyetel allow_future
menjadi True
.
Ancestors (MRO)
django.views.generic.list.MultipleObjectTemplateResponseMixin
django.views.generic.base.TemplateResponseMixin
django.views.generic.dates.BaseMonthArchiveView
django.views.generic.dates.YearMixin
django.views.generic.dates.MonthMixin
django.views.generic.dates.BaseDateListView
django.views.generic.list.MultipleObjectMixin
django.views.generic.dates.DateMixin
django.views.generic.base.View
Konteks
Sebagai tambahan pada konteks disediakan oleh MultipleObjectMixin
(melalui django.views.generic.dates.BaseDateListView
), konteks cetakan akan menjadi:
date_list
: Sebuah obyek QuerySet
mengandung semua hari yang mempunyai obyek-obyek tersedia di bulan yang diberikan, menurut pada queryset
, diwakili sebagai obyek datetime.datetime
, dalam urutan menaik.month
: Sebuah obyek date
mewakili bulanyang diberikan.next_month
: Sebuah obyek date
mewakili hari pertama dari bulan selanjutnya menurut allow_empty
dan allow_future
.previous_month
: Sebuah obyek date
mewakili hari pertama dari bulan sebelumnya, menurut allow_empty
dan allow_future
.Catatan
template_name_suffix
awal dari _archive_month
.Contoh myapp/views.py:
from django.views.generic.dates import MonthArchiveView
from myapp.models import Article
class ArticleMonthArchiveView(MonthArchiveView):
queryset = Article.objects.all()
date_field = "pub_date"
allow_future = True
Contoh myapp/urls.py:
from django.urls import path
from myapp.views import ArticleMonthArchiveView
urlpatterns = [
# Example: /2012/08/
path('<int:year>/<int:month>/',
ArticleMonthArchiveView.as_view(month_format='%m'),
name="archive_month_numeric"),
# Example: /2012/aug/
path('<int:year>/<str:month>/',
ArticleMonthArchiveView.as_view(),
name="archive_month"),
]
Contoh myapp/article_archive_month.html:
<ul>
{% for article in object_list %}
<li>{{ article.pub_date|date:"F j, Y" }}: {{ article.title }}</li>
{% endfor %}
</ul>
<p>
{% if previous_month %}
Previous Month: {{ previous_month|date:"F Y" }}
{% endif %}
{% if next_month %}
Next Month: {{ next_month|date:"F Y" }}
{% endif %}
</p>
WeekArchiveView
¶WeekArchiveView
[sumber]¶Halaman arsip tahunan menampilkan semua obyek di minggu yang diberikan. Obyek-obyek dengan tanggal future tidak ditampilkan meskipun anda menyetel allow_future
menjadi True
.
Ancestors (MRO)
django.views.generic.list.MultipleObjectTemplateResponseMixin
django.views.generic.base.TemplateResponseMixin
django.views.generic.dates.BaseWeekArchiveView
django.views.generic.dates.YearMixin
django.views.generic.dates.WeekMixin
django.views.generic.dates.BaseDateListView
django.views.generic.list.MultipleObjectMixin
django.views.generic.dates.DateMixin
django.views.generic.base.View
Konteks
Sebagai tambahan pada konteks disediakan oleh MultipleObjectMixin
(melalui django.views.generic.dates.BaseDateListView
), konteks cetakan akan menjadi:
week
: Sebuah obyek date
mewakili hari pertama dari minggu yang diberikan.next_week
: Sebuah obyek date
mewakili hari pertama dari minggu selanjutnya menurut allow_empty
dan allow_future
.previous_week
: Sebuah obyek date
mewakili hari pertama dari minggu sebelumnya, menurut allow_empty
dan allow_future
.Catatan
template_name_suffix
awal dari _archive_week
.week_format
adalah sebuah bentuk string strptime()
digunakan untuk mengurai nomor minggu. Nilai-nilai berikut adalah didukung:'%U'
: Berdasarkan pada sistem minggu Amerika Serikat dimana minggu dimulai pada hari Minggu. Ini adalah nilai awalan.'%W'
: Mirip pada '%U'
, kecuali itu menganggap bahwa minggu dimulai pada hari Senin. Ini tidak sama seperti nomor minggu ISO 8601.Contoh myapp/views.py:
from django.views.generic.dates import WeekArchiveView
from myapp.models import Article
class ArticleWeekArchiveView(WeekArchiveView):
queryset = Article.objects.all()
date_field = "pub_date"
week_format = "%W"
allow_future = True
Contoh myapp/urls.py:
from django.urls import path
from myapp.views import ArticleWeekArchiveView
urlpatterns = [
# Example: /2012/week/23/
path('<int:year>/week/<int:week>/',
ArticleWeekArchiveView.as_view(),
name="archive_week"),
]
Contoh myapp/article_archive_week.html:
<h1>Week {{ week|date:'W' }}</h1>
<ul>
{% for article in object_list %}
<li>{{ article.pub_date|date:"F j, Y" }}: {{ article.title }}</li>
{% endfor %}
</ul>
<p>
{% if previous_week %}
Previous Week: {{ previous_week|date:"W" }} of year {{ previous_week|date:"Y" }}
{% endif %}
{% if previous_week and next_week %}--{% endif %}
{% if next_week %}
Next week: {{ next_week|date:"W" }} of year {{ next_week|date:"Y" }}
{% endif %}
</p>
Di contoh ini, anda mengeluarkan nomor minggu. Harap diingat bahwa nomor minggu dihitung oleh penyaring cetakan date
dengan karakter bentuk 'W'
tidak selalu sama ketika itu dihitung oleh strftime()
dan strptime()
dengan string bentuk strptime()
. untuk tahun 2015, sebagai keluaran contoh nomor minggu oleh date
adalah lebih tinggi oleh satu dibandingkan ke keluarannya oleh strftime()
. Tidak ada setara untuk string bentuk '%U'` strftime()
di date
. Karena itu, anda harus menghindari menggunakan date
untuk membangkitkan URL untuk WeekArchiveView
.
DayArchiveView
¶DayArchiveView
[sumber]¶Halaman arsip tahunan menampilkan semua obyek di hari yang diberikan. Hari-hari d masa depan melemparkan sebuah kesalahan 404, terlepas dari apapun setiap obyek ada untuk hari akan datang, meskipun anda menyetel allow_future
menjadi True
.
Ancestors (MRO)
django.views.generic.list.MultipleObjectTemplateResponseMixin
django.views.generic.base.TemplateResponseMixin
django.views.generic.dates.BaseDayArchiveView
django.views.generic.dates.YearMixin
django.views.generic.dates.MonthMixin
django.views.generic.dates.DayMixin
django.views.generic.dates.BaseDateListView
django.views.generic.list.MultipleObjectMixin
django.views.generic.dates.DateMixin
django.views.generic.base.View
Konteks
Sebagai tambahan pada konteks disediakan oleh MultipleObjectMixin
(melalui django.views.generic.dates.BaseDateListView
), konteks cetakan akan menjadi:
day
: Sebuah obyek date
mewakili hari diberikan.next_day
: Sebuah obyek date
mewakili hari selanjutnya, menurut allow_empty
dan allow_future
.previous_day
: Sebuah obyek date
mewakili hari sebelumnya, menurut allow_empty
dan allow_future
.next_month
: Sebuah obyek date
mewakili hari pertama dari bulan selanjutnya menurut allow_empty
dan allow_future
.previous_month
: Sebuah obyek date
mewakili hari pertama dari bulan sebelumnya, menurut allow_empty
dan allow_future
.Catatan
template_name_suffix
awal dari _archive_day
.Contoh myapp/views.py:
from django.views.generic.dates import DayArchiveView
from myapp.models import Article
class ArticleDayArchiveView(DayArchiveView):
queryset = Article.objects.all()
date_field = "pub_date"
allow_future = True
Contoh myapp/urls.py:
from django.urls import path
from myapp.views import ArticleDayArchiveView
urlpatterns = [
# Example: /2012/nov/10/
path('<int:year>/<str:month>/<int:day>/',
ArticleDayArchiveView.as_view(),
name="archive_day"),
]
Contoh myapp/article_archive_day.html:
<h1>{{ day }}</h1>
<ul>
{% for article in object_list %}
<li>{{ article.pub_date|date:"F j, Y" }}: {{ article.title }}</li>
{% endfor %}
</ul>
<p>
{% if previous_day %}
Previous Day: {{ previous_day }}
{% endif %}
{% if previous_day and next_day %}--{% endif %}
{% if next_day %}
Next Day: {{ next_day }}
{% endif %}
</p>
TodayArchiveView
¶TodayArchiveView
[sumber]¶Halaman arsip hari menampilkan semua obyek untuk today. Ini sebenarnya sama seperti django.views.generic.dates.DayArchiveView
, kecuali tanggal hari ini digunakan daripada argumen year
/month
/day
.
Ancestors (MRO)
django.views.generic.list.MultipleObjectTemplateResponseMixin
django.views.generic.base.TemplateResponseMixin
django.views.generic.dates.BaseTodayArchiveView
django.views.generic.dates.BaseDayArchiveView
django.views.generic.dates.YearMixin
django.views.generic.dates.MonthMixin
django.views.generic.dates.DayMixin
django.views.generic.dates.BaseDateListView
django.views.generic.list.MultipleObjectMixin
django.views.generic.dates.DateMixin
django.views.generic.base.View
Catatan
template_name_suffix
awal dari _archive_today
.Contoh myapp/views.py:
from django.views.generic.dates import TodayArchiveView
from myapp.models import Article
class ArticleTodayArchiveView(TodayArchiveView):
queryset = Article.objects.all()
date_field = "pub_date"
allow_future = True
Contoh myapp/urls.py:
from django.urls import path
from myapp.views import ArticleTodayArchiveView
urlpatterns = [
path('today/',
ArticleTodayArchiveView.as_view(),
name="archive_today"),
]
Dimana contoh cetakan untuk TodayArchiveView
?
Tampilan ini menggunakan secara awal cetakan sama seperti DayArchiveView
, yang mana di contoh sebelumnya. Jika anda butuh cetakan berbeda, setel atribut template_name
menjadi nama dari cetakan baru.
DateDetailView
¶DateDetailView
[sumber]¶Sebuah halaman mewakili obyek perseorangan. Jika obyek mempunyai nilai tanggal di masa depan, tampilan akan melempar sebuah kesalahan 404 secara awalan, meskipun anda menyetel allow_future
menjadi True
.
Ancestors (MRO)
django.views.generic.detail.SingleObjectTemplateResponseMixin
django.views.generic.base.TemplateResponseMixin
django.views.generic.dates.BaseDateDetailView
django.views.generic.dates.YearMixin
django.views.generic.dates.MonthMixin
django.views.generic.dates.DayMixin
django.views.generic.dates.DateMixin
django.views.generic.detail.BaseDetailView
django.views.generic.detail.SingleObjectMixin
django.views.generic.base.View
Konteks
model
ditentukan di DateDetailView
.Catatan
template_name_suffix
awal dari _detail
.Contoh myapp/urls.py:
from django.urls import path
from django.views.generic.dates import DateDetailView
urlpatterns = [
path('<int:year>/<str:month>/<int:day>/<int:pk>/',
DateDetailView.as_view(model=Article, date_field="pub_date"),
name="archive_date_detail"),
]
Contoh myapp/article_detail.html:
<h1>{{ object.title }}</h1>
Catatan
Semua dari tampilan umum didaftarkan diatas telah mencocokkan tampilan Base
yang hanya berbeda di itu mereka tidak menyertakan MultipleObjectTemplateResponseMixin
(untuk tampilan arsip) atau SingleObjectTemplateResponseMixin
(untuk DateDetailView
):
Des 02, 2019