Django的DetailView
是一个用于显示单个对象详情的视图。下面是一个使用DetailView
来显示单个书籍详情的例子。
1,添加视图
Test/app3/views.py
from django.shortcuts import render# Create your views here.
from django.views.generic import ListView
from .models import Bookclass BookListView(ListView):model = Bookcontext_object_name = 'books'template_name = 'books/book_list.html'paginate_by = 10 # 设置展示页数数据from django.views.generic import DetailView
class BookDetailView(DetailView):model = Bookcontext_object_name = 'book'template_name = 'books/book_detail.html'
2,添加路由地址
Test/app3/urls.py
from django.urls import path
from . import viewsfrom .views import BookListView
from .views import BookDetailViewurlpatterns = [path('books/', BookListView.as_view(), name='book_list'),path('books/<int:pk>/', BookDetailView.as_view(), name='book_detail'),
]
3,添加html代码
Test/templates/books/book_detail.html
<!-- 在templates/books/book_detail.html中 -->
<!DOCTYPE html>
<html>
<head><title>{{ book.title }}</title>
</head>
<body><h1>{{ book.title }}</h1><p>Author: {{ book.author }}</p><p>Publication date: {{ book.publication_date }}</p>
</body>
</html>
3,访问页面
http://127.0.0.1:8000/app3/books/1/