Django CBV ( 类视图函数 )

小灰灰 2023-10-08 12:00 179阅读 0赞

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

  1. 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表)
在这里插入图片描述
迁移

  1. python manage.py makemigrations
  2. 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
    在这里插入图片描述
    访问
    在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,179人围观)

还没有评论,来说两句吧...

相关阅读

    相关 DjangoCBV

    Django 中有两种编写方式,FBV 和 CBV,那么什么是 FBV,CBV 又是什么呢? 一、什么是 CBV FBV(function base views)

    相关 Django视图

    Django类视图 resetful 接口开发的思路,前后端分离,网站可以接受非浏览器用户的访问,对于大规模批量的操作,有很好的效果。 resetful 要求 url 不可