Django CBV ( 类视图函数 )
Django 类视图函数
- 写在前面
- 1、先创建一个新的应用
- 2、写一个类视图函数
- 3、post访问试试
- 4、再创建一个类视图函数
- 5、as_view()里面可以传参
- 6、TemplateView
- 6.1、template_name写到路由里
- 6.2、template_name写到视图里
- 7、ListView
- 8、DetailView
- 8.1、DetailView还可以不指定template_name
写在前面
之前我们用的视图函数叫FBV(也就是函数型视图函数),这里我们来试试CBV(类视图函数)的写法。
类视图函数可以让代码看起来更简洁,用起来更方便
1、先创建一个新的应用
创建应用CBVapp
python manage.py startapp CBVapp
在这个应用里创建一个urls.py
在根路由里面新建CBVapp的路由连接
2、写一个类视图函数
视图函数CBVapp/views.py
在CBVapp/urls.py添加一个对应的路由
启动
访问
3、post访问试试
在接口测试工具postman里面尝试对这个地址进行post请求
最后提示405,访问不被允许
原因是手动创建的类视图函数需要自己写GET、POET等请求方式
如下
再次发起post请求
4、再创建一个类视图函数
视图
路由
访问
5、as_view()里面可以传参
视图
路由
访问
注意:as_view()里面只能传已经存在的参数
6、TemplateView
先在模板文件夹templates里面新建一个index.html
6.1、template_name写到路由里
在视图里写一个继承自TemplateView的视图类
写一个带template_name的路由
运行后,访问:
6.2、template_name写到视图里
视图
路由
运行后,访问
7、ListView
ListView用来获取存储在数据库中的某个model的列表,获取更方便,不用手动获取数据库里的信息。
例:
首先,记得在setting中注册当前app
模型(创建一个user表)
迁移
python manage.py makemigrations
python manage.py migrate
在数据库插入数据
视图
路由
模板html(ListView里面自带object_list,能获取model里user所有的列)
访问
8、DetailView
DetailView能够根据get请求传的一个pk获取数据库里的某一条数据。
例:
视图
路由
html
访问
8.1、DetailView还可以不指定template_name
DetailView不指定template_name,它可以根据html文件命名规则找到对应的html
规则:
- 该html必须在 templates/应用名/ 文件夹下
- 文件名需为 _detail,html 结尾
例:
- 路由不变
- 视图
- html
访问
还没有评论,来说两句吧...