Общие представления дисплея¶
Два следующих общих представления на основе классов предназначены для отображения данных. Во многих проектах они, как правило, являются наиболее часто используемыми представлениями.
DetailView¶
- 
class django.views.generic.detail.DetailView¶
- Во время выполнения этого представления - 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
 - ** Блок-схема метода** - setup()
- dispatch()
- http_method_not_allowed()
- get_template_names()
- get_slug_field()
- get_queryset()
- get_object()
- get_context_object_name()
- get_context_data()
- get()
- 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> 
- 
class django.views.generic.detail.BaseDetailView¶
- Базовое представление для отображения одного объекта. Оно не предназначено для непосредственного использования, а скорее как родительский класс - django.views.generic.detail.DetailViewили других представлений, представляющих детали одного объекта.- Предки (MRO). - Это представление наследует методы и атрибуты от следующих представлений: - Методы - 
get(request, *args, **kwargs)¶
- Добавляет - objectк контексту.
 
- 
ListView¶
- 
class django.views.generic.list.ListView¶
- Страница, представляющая список объектов. - Во время выполнения этого представления - 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
 - ** Блок-схема метода** - setup()
- dispatch()
- http_method_not_allowed()
- get_template_names()
- get_queryset()
- get_context_object_name()
- get_context_data()
- get()
- render_to_response()
 - Пример views.py: - 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> - Если вы используете пагинацию, вы можете адаптировать example template from the pagination docs. Измените экземпляры - contactsв шаблоне примера на- page_obj.
- 
class django.views.generic.list.BaseListView¶
- Базовое представление для отображения списка объектов. Оно не предназначено для непосредственного использования, а скорее как родительский класс - django.views.generic.list.ListViewили других представлений, представляющих списки объектов.- Предки (MRO). - Это представление наследует методы и атрибуты от следующих представлений: - Методы - 
get(request, *args, **kwargs)¶
- Добавляет - object_listк контексту. Если- allow_emptyравно True, то выводит пустой список. Если- allow_emptyравно False, то выдает ошибку 404.
 
-