详解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获取各操作系统硬件信息的方法
Jun 03 Python
分享Python开发中要注意的十个小贴士
Aug 30 Python
浅谈python数据类型及类型转换
Dec 18 Python
详解TensorFlow查看ckpt中变量的几种方法
Jun 19 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
python导入模块交叉引用的方法
Jan 19 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
python分割一个文本为多个文本的方法
Jul 22 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
Jul 14 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 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
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
PHP小技巧之函数重载
2014/06/02 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
JavaScript 学习笔记(五)
2009/12/31 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
2018/11/02 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python os模块学习笔记
2015/06/21 Python
python程序变成软件的实操方法
2019/06/24 Python
Python Collatz序列实现过程解析
2019/10/12 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
音乐教育感言
2014/03/05 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
土木工程求职信
2014/05/29 职场文书
军训拉歌口号
2014/06/13 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技