Django 2.1 - Generic date views

सामान्य तारीख के विचार




django

सामान्य तारीख के विचार

django.views.generic.dates में उपलब्ध दिनांक-आधारित सामान्य दृश्य, तिथि-आधारित डेटा के लिए ड्रिलडाउन पृष्ठ प्रदर्शित करने के लिए विचार हैं।

ध्यान दें

इस पृष्ठ के कुछ उदाहरण यह मानते हैं कि एक Article मॉडल को 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

class ArchiveIndexView [source]

एक शीर्ष-स्तरीय इंडेक्स पेज, जो "नवीनतम" ऑब्जेक्ट दिखा रहा है, आज तक। भविष्य में कोई दिनांक वाली वस्तुएं तब तक शामिल नहीं की जाती हैं जब तक आप True लिए allow_future सेट नहीं करते हैं।

पूर्वज (MRO)

प्रसंग

django.views.generic.list.MultipleObjectMixin ( django.views.generic.dates.BaseDateListView माध्यम से) के संदर्भ के अलावा, टेम्पलेट का संदर्भ होगा:

  • date_list : QuerySet अनुसार उपलब्ध सभी वर्षों से युक्त एक QuerySet ऑब्जेक्ट, अवरोही क्रम में datetime.datetime वस्तुओं के रूप में दर्शाया गया है।

टिप्पणियाँ

  • latest एक डिफ़ॉल्ट context_object_name का उपयोग करता है।
  • डिफ़ॉल्ट template_name_suffix _archive का उपयोग करता है।
  • वर्ष के द्वारा date_list प्रदान करने में चूक, लेकिन यह विशेषता date_list_period का उपयोग करके महीने या दिन में बदला जा सकता है। यह सब उपवर्ग विचारों पर भी लागू होता है।

उदाहरण 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"),
]

उदाहरण myapp / article_archive.html :

<ul>
    {% for article in latest %}
        <li>{{ article.pub_date }}: {{ article.title }}</li>
    {% endfor %}
</ul>

यह सभी लेखों को आउटपुट देगा।

YearArchiveView

class YearArchiveView [source]

एक वार्षिक संग्रह पृष्ठ जो किसी दिए गए वर्ष में सभी उपलब्ध महीनों को दर्शाता है। भविष्य में कोई दिनांक वाली ऑब्जेक्ट तब तक प्रदर्शित नहीं होती हैं जब तक आप True लिए allow_future सेट नहीं करते हैं।

पूर्वज (MRO)

make_object_list

एक बूलियन निर्दिष्ट करता है कि क्या इस वर्ष के लिए वस्तुओं की पूरी सूची को पुनः प्राप्त करना है और उन्हें टेम्पलेट में पास करना है। यदि True , तो वस्तुओं की सूची संदर्भ को उपलब्ध कराई जाएगी। यदि False , तो None क्वेरी ऑब्जेक्ट सूची के रूप में उपयोग None जाएगी। डिफ़ॉल्ट रूप से, यह False

get_make_object_list()

निर्धारित करें कि क्या वस्तु सूची संदर्भ के हिस्से के रूप में वापस आ जाएगी। डिफ़ॉल्ट रूप से make_object_list देता है।

प्रसंग

django.views.generic.list.MultipleObjectMixin ( django.views.generic.dates.BaseDateListView माध्यम से) के संदर्भ के अलावा, टेम्पलेट का संदर्भ होगा:

  • date_list : QuerySet अनुसार सभी महीने वाली ऑब्जेक्ट जिसमें QuerySet अनुसार उपलब्ध ऑब्जेक्ट्स हैं, जिन्हें आरोही क्रम में datetime.datetime ऑब्जेक्ट्स के रूप में दर्शाया गया है।
  • year : किसी दिए गए वर्ष का प्रतिनिधित्व करने वाला date वस्तु।
  • next_year : allow_empty और allow_future अनुसार, अगले वर्ष के पहले दिन का प्रतिनिधित्व करने वाला date ऑब्जेक्ट।
  • allow_empty और allow_future अनुसार पिछले वर्ष के पहले दिन का प्रतिनिधित्व करने वाला date ऑब्जेक्ट।

टिप्पणियाँ

  • एक डिफ़ॉल्ट template_name_suffix _archive_year का उपयोग करता है _archive_year

उदाहरण 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

उदाहरण myapp / urls.py :

from django.urls import path

from myapp.views import ArticleYearArchiveView

urlpatterns = [
    path('<int:year>/',
         ArticleYearArchiveView.as_view(),
         name="article_year_archive"),
]

उदाहरण 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

class MonthArchiveView [source]

एक मासिक संग्रह पृष्ठ जो किसी दिए गए महीने में सभी वस्तुओं को दिखा रहा है। भविष्य में कोई दिनांक वाली ऑब्जेक्ट तब तक प्रदर्शित नहीं होती हैं जब तक आप True लिए allow_future सेट नहीं करते हैं।

पूर्वज (MRO)

प्रसंग

django.views.generic.list.MultipleObjectMixin django.views.generic.dates.BaseDateListView ( django.views.generic.dates.BaseDateListView जरिए) के संदर्भ के अलावा, टेम्प्लेट का संदर्भ निम्न होगा:

  • date_list : QuerySet सभी दिन जिसमें ऑब्जेक्ट दिए गए महीने में उपलब्ध हैं, QuerySet अनुसार, आरोही क्रम में QuerySet ऑब्जेक्ट के रूप में दर्शाया गया है।
  • month : किसी दिए गए महीने का प्रतिनिधित्व करने वाला date वस्तु।
  • next_month : एक date वस्तु जो अगले महीने के पहले दिन का प्रतिनिधित्व करती है, allow_empty और allow_future अनुसार।
  • allow_empty : एक date वस्तु जो पिछले महीने के पहले दिन का प्रतिनिधित्व करती है, allow_empty और allow_future अनुसार।

टिप्पणियाँ

  • एक मूलभूत template_name_suffix _archive_month का उपयोग करता है _archive_month

उदाहरण 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

उदाहरण 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"),
]

उदाहरण 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

class WeekArchiveView [source]

एक साप्ताहिक संग्रह पृष्ठ जो किसी दिए गए सप्ताह में सभी वस्तुओं को दर्शाता है। भविष्य में कोई दिनांक वाली ऑब्जेक्ट तब तक प्रदर्शित नहीं होती हैं जब तक आप True लिए allow_future सेट नहीं करते हैं।

पूर्वज (MRO)

प्रसंग

django.views.generic.list.MultipleObjectMixin django.views.generic.dates.BaseDateListView ( django.views.generic.dates.BaseDateListView जरिए) के संदर्भ के अलावा, टेम्प्लेट का संदर्भ निम्न होगा:

  • week : किसी date वस्तु को दिए गए सप्ताह के पहले दिन का प्रतिनिधित्व करना।
  • next_week : allow_empty और allow_future अनुसार, अगले सप्ताह के पहले दिन का प्रतिनिधित्व करने वाला date ऑब्जेक्ट।
  • allow_empty : एक date ऑब्जेक्ट जो पिछले सप्ताह के पहले दिन का प्रतिनिधित्व करता है, allow_empty और allow_future अनुसार।

टिप्पणियाँ

  • डिफ़ॉल्ट template_name_suffix _archive_week के _archive_week का उपयोग करता है।
  • week_format विशेषता एक strptime() प्रारूप स्ट्रिंग है जिसका उपयोग सप्ताह संख्या को पार्स करने के लिए किया जाता है। निम्नलिखित मान समर्थित हैं:
    • '%U' : संयुक्त राज्य अमेरिका सप्ताह प्रणाली के आधार पर जहां सप्ताह रविवार से शुरू होता है। यह व्यतिक्रम मूल्य है।
    • '%W' : '%U' , सिवाय इसके कि सप्ताह सोमवार से शुरू हो। यह आईएसओ 8601 सप्ताह की संख्या के समान नहीं है।

उदाहरण 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

उदाहरण 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"),
]

उदाहरण 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>

इस उदाहरण में, आप सप्ताह संख्या को आउटपुट कर रहे हैं। ध्यान रखें कि 'W' प्रारूप चरित्र के साथ date टेम्पलेट फ़िल्टर द्वारा गणना की गई सप्ताह संख्याएँ हमेशा '%W' प्रारूप स्ट्रिंग के साथ strftime() और strptime() द्वारा गणना की गई के समान नहीं होती हैं। वर्ष 2015 के लिए, उदाहरण के लिए, date आधार पर सप्ताह संख्या का उत्पादन strftime() द्वारा उन आउटपुट की तुलना में एक से अधिक है। date में '%U' strftime() प्रारूप स्ट्रिंग के लिए कोई समतुल्य नहीं है। इसलिए, आपको WeekArchiveView URL बनाने के लिए date का उपयोग करने से बचना चाहिए।

DayArchiveView

class DayArchiveView [source]

एक दिन संग्रह पृष्ठ जो किसी दिए गए दिन में सभी वस्तुओं को दिखा रहा है। भविष्य में दिन 404 त्रुटि फेंकते हैं, चाहे वह कोई भी वस्तु भविष्य के दिनों के लिए मौजूद हो, जब तक कि आप True लिए allow_future सेट allow_future करें।

पूर्वज (MRO)

प्रसंग

django.views.generic.list.MultipleObjectMixin django.views.generic.dates.BaseDateListView ( django.views.generic.dates.BaseDateListView जरिए) के संदर्भ के अलावा, टेम्प्लेट का संदर्भ निम्न होगा:

  • day : किसी date वस्तु का दिया हुआ दिन।
  • next_day : allow_empty और allow_future अनुसार, अगले दिन का प्रतिनिधित्व करने वाला date ऑब्जेक्ट।
  • allow_empty पिछले दिन का प्रतिनिधित्व करने वाला एक date ऑब्जेक्ट, allow_empty और allow_future अनुसार।
  • next_month : एक date वस्तु जो अगले महीने के पहले दिन का प्रतिनिधित्व करती है, allow_empty और allow_future अनुसार।
  • allow_empty : एक date वस्तु जो पिछले महीने के पहले दिन का प्रतिनिधित्व करती है, allow_empty और allow_future अनुसार।

टिप्पणियाँ

  • डिफ़ॉल्ट template_name_suffix _archive_day का _archive_day का उपयोग करता है।

उदाहरण 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

उदाहरण 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"),
]

उदाहरण 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

class TodayArchiveView [source]

आज के लिए सभी वस्तुओं को दिखाने वाला एक दिन का संग्रह पृष्ठ। यह ठीक वैसा ही है जैसा कि django.views.generic.dates.DayArchiveView को छोड़कर, आज की तारीख को year / month / day तर्कों के बजाय प्रयोग किया जाता है।

पूर्वज (MRO)

टिप्पणियाँ

  • एक डिफ़ॉल्ट template_name_suffix _archive_today का उपयोग करता है _archive_today

उदाहरण 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

उदाहरण myapp / urls.py :

from django.urls import path

from myapp.views import ArticleTodayArchiveView

urlpatterns = [
    path('today/',
         ArticleTodayArchiveView.as_view(),
         name="archive_today"),
]

TodayArchiveView लिए उदाहरण टेम्पलेट कहाँ है?

यह दृश्य डिफ़ॉल्ट रूप से DayArchiveView के समान टेम्पलेट का उपयोग करता है, जो पिछले उदाहरण में है। यदि आपको एक अलग टेम्पलेट की आवश्यकता है, तो नए टेम्पलेट का नाम होने के लिए template_name विशेषता सेट करें।

DateDetailView

class DateDetailView [source]

एक पृष्ठ एक व्यक्तिगत वस्तु का प्रतिनिधित्व करता है। यदि ऑब्जेक्ट का भविष्य में दिनांक मान है, तो दृश्य 404 त्रुटि को डिफ़ॉल्ट रूप से फेंक देगा, जब तक कि आप True लिए allow_future सेट नहीं करते।

पूर्वज (MRO)

प्रसंग

  • DateDetailView में निर्दिष्ट model संबंधित एकल ऑब्जेक्ट शामिल है।

टिप्पणियाँ

  • डिफ़ॉल्ट template_name_suffix का उपयोग करता है _detail of _detail

उदाहरण 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"),
]

उदाहरण myapp / article_detail.html :

<h1>{{ object.title }}</h1>

ध्यान दें

ऊपर सूचीबद्ध सभी जेनेरिक विचारों में मिलान Base विचार होते हैं जो केवल इस बात में भिन्न होते हैं कि उनमें django.views.generic.list.MultipleObjectTemplateResponseMixin (पुरालेख विचारों के लिए) या django.views.generic.detail.SingleObjectTemplateResponseMixin ( DateDetailView ) शामिल नहीं हैं:

class BaseArchiveIndexView [source]
class BaseYearArchiveView [source]
class BaseMonthArchiveView [source]
class BaseWeekArchiveView [source]
class BaseDayArchiveView [source]
class BaseTodayArchiveView [source]
class BaseDateDetailView [source]