Django 2.1 - Generic display views

सामान्य प्रदर्शन के विचार




django

सामान्य प्रदर्शन के विचार

निम्नलिखित दो सामान्य वर्ग-आधारित दृश्य डेटा प्रदर्शित करने के लिए डिज़ाइन किए गए हैं। कई परियोजनाओं पर वे आम तौर पर सबसे अधिक इस्तेमाल किए जाने वाले विचार हैं।

DetailView

class django.views.generic.detail.DetailView

जबकि यह दृश्य निष्पादित हो रहा है, self.object में वह ऑब्जेक्ट शामिल होगा जिस पर दृश्य चल रहा है।

पूर्वज (MRO)

यह दृश्य निम्नलिखित विचारों के तरीकों और विशेषताओं को विरासत में देता है:

विधि फ़्लोचार्ट

  1. dispatch()
  2. http_method_not_allowed()
  3. get_template_names()
  4. get_slug_field()
  5. get_queryset()
  6. get_object()
  7. get_context_object_name()
  8. get_context_data()
  9. get()
  10. render_to_response()

उदाहरण myapp / views.py

from django.utils import timezone
from django.views.generic.detail import DetailView

from articles.models import Article

class ArticleDetailView(DetailView):

    model = Article

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['now'] = timezone.now()
        return context

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

from django.urls import path

from article.views import ArticleDetailView

urlpatterns = [
    path('<slug:slug>/', ArticleDetailView.as_view(), name='article-detail'),
]

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

<h1>{{ object.headline }}</h1>
<p>{{ object.content }}</p>
<p>Reporter: {{ object.reporter }}</p>
<p>Published: {{ object.pub_date|date }}</p>
<p>Date: {{ now|date }}</p>

ListView

class django.views.generic.list.ListView

एक पृष्ठ जो वस्तुओं की सूची का प्रतिनिधित्व करता है।

जब यह दृश्य निष्पादित हो रहा है, self.object_list में वस्तुओं की सूची होगी (आमतौर पर, लेकिन जरूरी नहीं कि एक क्वेरी) जो कि दृश्य पर काम कर रही है।

पूर्वज (MRO)

यह दृश्य निम्नलिखित विचारों के तरीकों और विशेषताओं को विरासत में देता है:

विधि फ़्लोचार्ट

  1. dispatch()
  2. http_method_not_allowed()
  3. get_template_names()
  4. get_queryset()
  5. get_context_object_name()
  6. get_context_data()
  7. get()
  8. render_to_response()

उदाहरण

from django.utils import timezone
from django.views.generic.list import ListView

from articles.models import Article

class ArticleListView(ListView):

    model = Article
    paginate_by = 100  # if pagination is desired

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['now'] = timezone.now()
        return context

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

from django.urls import path

from article.views import ArticleListView

urlpatterns = [
    path('', ArticleListView.as_view(), name='article-list'),
]

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

<h1>Articles</h1>
<ul>
{% for article in object_list %}
    <li>{{ article.pub_date|date }} - {{ article.headline }}</li>
{% empty %}
    <li>No articles yet.</li>
{% endfor %}
</ul>

यदि आप पृष्ठांकन का उपयोग कर रहे हैं, तो आप पृष्ठांकन दस्तावेज़ से उदाहरण टेम्पलेट को अनुकूलित कर सकते हैं। उस उदाहरण टेम्पलेट में contacts उदाहरणों को page_obj पर page_obj

class django.views.generic.list.BaseListView

वस्तुओं की सूची प्रदर्शित करने के लिए आधार दृश्य। यह सीधे इस्तेमाल करने का इरादा नहीं है, बल्कि django.views.generic.list.ListView या वस्तुओं की सूची का प्रतिनिधित्व करने वाले अन्य विचारों के एक मूल वर्ग के रूप में है।

पूर्वज (MRO)

यह दृश्य निम्नलिखित विचारों के तरीकों और विशेषताओं को विरासत में देता है:

तरीके

get(request, *args, **kwargs)

object_list को संदर्भ में जोड़ता है। अगर allow_empty सत्य है तो एक खाली सूची प्रदर्शित करें। यदि allow_empty गलत है, तो 404 त्रुटि बढ़ाएं।