Spec-Zone.ru › Django 1.11

Общие представления для отображения

Два следующих общих представления на основе классов предназначены для отображения данных. На многих проектах они обычно являются наиболее часто используемыми представлениями.

Подробное представление

Подробное представление

Во время выполнения этого представления, self.object будет содержать объект, над которым работает представление.

Предки (MRO)

Это представление наследует методы и атрибуты от следующих представлений:

  • django.views.generic.detail.SingleObjectTemplateResponseMixin
  • django.views.generic.base.TemplateResponseMixin
  • django.views.generic.detail.BaseDetailView
  • django.views.generic.detail.SingleObjectMixin
  • django.views.generic.base.View

Диаграмма потока методов

  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.views.generic.detail import DetailView
from django.utils import timezone

from articles.models import Article

class ArticleDetailView(DetailView):

    model = Article

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

Пример myapp/urls.py:

from django.conf.urls import url

from article.views import ArticleDetailView

urlpatterns = [
    url(r'^(?P<slug>[-\w]+)/$', 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>

Список представлений

Список представлений

Страница, представляющая список объектов.

Во время выполнения этого представления, self.object_list будет содержать список объектов (обычно, но необязательно, набор результатов запроса), над которым работает представление.

Предки (MRO)

Это представление наследует методы и атрибуты от следующих представлений:

  • django.views.generic.list.MultipleObjectTemplateResponseMixin
  • django.views.generic.base.TemplateResponseMixin
  • django.views.generic.list.BaseListView
  • django.views.generic.list.MultipleObjectMixin
  • django.views.generic.base.View

Диаграмма потока методов

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

Пример views.py:

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

from articles.models import Article

class ArticleListView(ListView):

    model = Article

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

Пример myapp/urls.py:

from django.conf.urls import url

from article.views import ArticleListView

urlpatterns = [
    url(r'^$', 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>
Базовое представление списка

Базовое представление для отображения списка объектов. Оно не предназначено для непосредственного использования, а скорее как родительский класс для django.views.generic.list.ListView или других представлений, представляющих списки объектов.

Предки (MRO)

Это представление наследует методы и атрибуты от следующих представлений:

  • django.views.generic.list.MultipleObjectMixin
  • django.views.generic.base.View

Методы

get(request, *args, **kwargs)

Добавляет object_list в контекст. Если allow_empty равно True, отображается пустой список. Если allow_empty равно False, выводится ошибка 404.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.11/ref/class-based-views/generic-display/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API