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

访问



















