详解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简单的制作图片验证码实例
May 31 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
Django模板Templates使用方法详解
Jul 19 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
python3 求约数的实例
Dec 05 Python
用python解压分析jar包实例
Jan 16 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
Python中求对数方法总结
Mar 10 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
浅谈Python3多线程之间的执行顺序问题
May 02 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
python实现邮件循环自动发件功能
Sep 11 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
C# Assembly类访问程序集信息
2009/06/13 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
公司委托书范本
2014/04/04 职场文书
小学生作文评语集锦
2014/12/25 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
排查Tomcat进程假死的问题
2022/05/06 Servers