Класс DetailView
Данный класс используется для получения страницы конкретного объекта (нампример одной новости).
Для его использования импортируем библиотеку в файле views.py
:
from django.views.generic import DetailView
Способ создания 1
- Объявим класс:
class ViewNews(DetailView): model = News pk_url_kwarg = 'news_id' # Параметр необходим для передачи через адрес ID конкретной страницы для её отображения
- В файле
urls.py
добавим соответсвующее условие вызова:path('news/<int:news_id>/', ViewNews.as_view(), name='view_news')
- Создадим шаблон отображения страницы
view_news.html
Способ создания 2
- Объявим класс:
class ViewNews(DetailView): model = News context_object_name = 'news_item' # Указываем имя объекта для шабона вывода
- В файле
urls.py
добавим соответсвующее условие вызова:path('news/<int:pk>/', ViewNews.as_view(), name='view_news')
Поменяем в файле
models.py
в функцииget_absolute_url
классаNews
передаваемое kwarg сnews_id
наpk
- Cоздадим шаблон отображения страницы
view_news.html