通用视DetailView-飞外

通用视图DetailViewDetailView用于显示单个模型对象的数据。通常情况下,在URL中向视图提交对象的id,视图使用id获得模型对象,并将模型对象传递给模板。默认情况下,DetailView子类使用的模板文件名为"数据库模型名称_detail.html"在本例中使用的模型名称为user,所以默认的模板文件名称为user_detail.html在本例中项目名称为chapter5,Django默认在'/chapter5/chapter5/templates/chapter5/'目录中搜索user_detail.html文件举例:chapter5/chapter5/views.py文件from . import modelsfrom django.views.generic.detail import DetailViewfrom datetime import datetime#定义类继承DetailView类class useDetailView(DetailView):    model=models.user                              #定义需要的模型(即数据库表对象)    def get_context_data(self, **kwargs):          #重载父类方法(该方法名固定:获取上下文)        context=super().get_context_data(**kwargs) #显示的调用父类的的方法获取响应的报文,即数据库模型user对象数据        context["now"]=datetime.now()              #向返回的模型(数据库表数据)的报文中添加额外的数据,最后将该模型对象传递给模板文件user_detail.html        return context                             #自动调用模板user_detail.xml文件,来响应url请求                chapter5/chapter5/urls.py文件from django.contrib import adminfrom django.urls import pathfrom . import viewsfrom django.views.decorators.csrf import csrf_exempturlpatterns = [    path('admin/', admin.site.urls),    path('test/<urldata>',views.showData),    path('mytest404',views.mytest404),    path('get/',views.showGetdata),    path('str/',views.showSomething),    path('down/',views.downLoad),    path('csv/',views.writeCSV),    path('pdf/',views.wirtePDF),    path('json/',views.writeJSON),    path('redirect/',views.useRedirect),    path('usetem/',views.useTemplateResponse),    path('usemodels/',views.useModels),    path('pages',views.useModelsPaginator),    #path('useview',views.MyviewName.as_view()),              #MyviewName.as_view()才能如愿调用类视图    path('useview',csrf_exempt(views.MyviewName.as_view())),  #MyviewName.as_view()才能如愿调用类视图,并取消csrf校验    path('usesubview',csrf_exempt(views.subMyviewName.as_view())),    path('detail/<int:pk>',views.useDetailView.as_view()),]chapter5/chapter5/templates/chapter5/user_detail.html文件<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>使用内置的detail视图</title></head><body>   当前日期:{{now}} <(嗦牛子是什么意思?嗦牛子,指为男性口交。牛子在东北一些地区的方言中指阴茎,嗦牛子就是指口交。游戏解说周淑怡在一次直播中,读取粉丝发来的邮件时,有一个男粉丝说:周姐,我前几天听了你的课,和室友分手了。平时他晚上熄灯主动来嗦我牛子......(读到这里周淑怡已经笑崩了)而嗦牛子这个词也被大家顿时感悟了是什么意思。);br/>          #now即为向DetailView子类中的模型对象添加的额外数据   <b>id:</b>{{object.id}}<br/>     #object即为接收到DetailView子类传递来的模型对象   <b>name:</b>{{object.name}}<br/>   <b>age:</b>{{object.age}}<br/></body></html>
使用通用视图DetailView.png