Djnago : AttributeError: модуль 'django.views.generic' не имеет атрибута 'Detail'
Откуда я могу импортировать атрибут детализации?
views.py:
from django.shortcuts import render
from django.views import generic
from . import models
class Index(generic.TemplateView):
template_name='catalog/index.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['num_books'] = models.Book.objects.all().count()
context['num_instances'] = models.BookInstance.objects.all().count()
context['num_instances_available'] = models.BookInstance.objects.filter(status__exact='a').count()
context['num_authors'] = models.Author.objects.count()
return context
class BookListView(generic.ListView):
model = models.Book
template_name = 'catalog/book_list.html'
class BookDetialView(generic.Detail.View):
model= models.Book
template_name = 'catalog/book_detail.html'
urls.py
from django.urls import include, path, re_path
from . import views
from django.views.generic import TemplateView
app_name='catalog'
urlpatterns = [
path(r'', views.Index.as_view(), name='index'),
re_path(r'^$', views.Index.as_view(), name='index')
]
urlpatterns = [
path(r'^$', views.index, name='index'),
path(r'^books/$', views.BookListView.as_view(), name='books'),
path(r'^book/(?P<pk>\d+)$', views.BookDetailView.as_view(), name='book-detail'),
]
но результат:
class BookDetialView(generic.Detail.View):
AttributeError: модуль 'django.views.generic' не имеет атрибута 'Detail'
Должно быть generic.DetailView вместо generic.Detail.View
В вашем BookDetailView вы использовали generic.Detail.View вместо DetailView[Djano-doc].
Измените свой BookDetailView как
from django.views import generic
class BookDetialView(generic.DetailView): #<--- change here
model= models.Book
template_name = 'catalog/book_detail.html'
У вас есть несколько проблем.
(1) В ваших представлениях вы пишете имя представления как BookDetialView, а в определении url вы пишете его BookDetailView.
(2) Я считаю, что правильное наследование - generic.DetailView вместо generic.Detail.View