详解Django中的FBV和CBV对比分析


Posted in Python onMarch 01, 2021

在学习Django过程中在views.py进行逻辑处理时接触到了两种视图的书写风格,FBV和CBV

FBV 指 function based views,即基于函数的视图

CBV 指 class based views,即基于类的视图

基于类的视图相较于基于函数的视图可以更加便利的实现类的继承封装等。在日常使用的时候,二者的区别主要在于对于request的请求方法的处理方式

FBV

我们通过函数传入的request的method来判断客户端发起的是什么请求,并进行相应的操作,返回相应的数据。

def fbv(request):
  if request.method == 'GET':
    return HttpResponse("GET")
  elif request.method == 'POST':
    return HttpResponse("POST")
  else:
    return HttpResponse("OTHER")

在urls.py中,我们使用下面的格式来书写路径

path('test/', views.fbv),

CBV

我们在类中定义相应请求的方法,并在方法中实现相应的逻辑处理并返回相应的数据,这种基于类的视图很适用于restful风格的书写。

class CBV(View):
  @csrf_exempt
  def get(self):
    return HttpResponse("GET")

  @csrf_exempt
  def post(self):
    return HttpResponse("POST")

  @csrf_exempt
  def put(self):
    return HttpResponse("PUT")

在urls.py中,我们使用下面的格式来书写路径

path('test/', views.cbv.as_view()),

到此这篇关于 详解Django中的FBV和CBV对比分析的文章就介绍到这了,更多相关Django FBV和CBV对比 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
利用python获取某年中每个月的第一天和最后一天
Dec 15 Python
用Python登录好友QQ空间点赞的示例代码
Nov 04 Python
Python语言实现将图片转化为html页面
Dec 06 Python
python opencv之SURF算法示例
Feb 24 Python
TensorFlow实现卷积神经网络CNN
Mar 09 Python
我用Python抓取了7000 多本电子书案例详解
Mar 25 Python
使用OpCode绕过Python沙箱的方法详解
Sep 03 Python
python的mysql数据库建立表与插入数据操作示例
Sep 30 Python
基于python操作ES实例详解
Nov 16 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 Python
详解python tcp编程
Aug 24 Python
Python下使用Trackbar实现绘图板
Oct 27 Python
Python3压缩和解压缩实现代码
Mar 01 #Python
python re模块常见用法例举
Mar 01 #Python
Python实现简单的2048小游戏
Mar 01 #Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 #Python
Python页面加载的等待方式总结
Feb 28 #Python
Python Selenium操作Cookie的实例方法
Feb 28 #Python
Python Selenium异常处理的实例分析
Feb 28 #Python
You might like
基于xcache的配置与使用详解
2013/06/18 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
php探针不显示内存解决方法
2019/09/17 PHP
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python sys.argv用法实例
2015/05/28 Python
详解K-means算法在Python中的实现
2017/12/05 Python
基于Python log 的正确打开方式
2018/04/28 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
Django csrf 验证问题的实现
2018/10/09 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
python开发游戏的前期准备
2019/05/05 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
《争吵》教学反思
2014/02/15 职场文书
年终考核实施方案
2014/05/26 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
色戒观后感
2015/06/12 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL