详解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和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 Python
Centos Python2 升级到Python3的简单实现
Jun 21 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
详解django中url路由配置及渲染方式
Feb 25 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 Python
Python测试模块doctest使用解析
Aug 10 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Python 实现使用空值进行赋值 None
Mar 12 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 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
PHP伪静态页面函数附使用方法
2008/06/20 PHP
php加密解密字符串示例
2016/10/13 PHP
设定php简写功能的方法
2019/11/28 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
详解参数传递四种形式
2015/07/21 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
javascript按顺序加载运行js方法
2017/12/01 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
wxPython 入门教程
2008/10/07 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
django框架使用方法详解
2019/07/18 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
python实现贪吃蛇双人大战
2020/04/18 Python
Django自带的用户验证系统实现
2020/12/18 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
护士自荐信范文
2013/12/15 职场文书
承诺书怎么写
2014/03/26 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
2014年学生会部门工作总结
2014/11/07 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技
Python中的datetime包与time包包和模块详情
2022/02/28 Python
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript