详解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设计模式中的代理模式与模板方法模式编程
Feb 02 Python
python中使用%与.format格式化文本方法解析
Dec 27 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 Python
Django REST framework 视图和路由详解
Jul 19 Python
pytorch索引查找 index_select的例子
Aug 18 Python
opencv-python 提取sift特征并匹配的实例
Dec 09 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
python中有帮助函数吗
Jun 19 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
Django配置跨域并开发测试接口
Nov 04 Python
基于Python实现流星雨效果的绘制
Mar 18 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
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
jQuery实现评论模块
2020/08/19 jQuery
Javascript实现单选框效果
2020/12/09 Javascript
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python读取YAML文件过程详解
2019/12/30 Python
python字符串判断密码强弱
2020/03/18 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
最好的商品表达自己:Cafepress
2019/09/04 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
机械工程学院大学生求职信
2014/05/25 职场文书
2015高考寄语集锦
2015/02/27 职场文书
计划生育责任书
2015/05/09 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
gateway网关接口请求的校验方式
2021/07/15 Java/Android
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers