详解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 fileinput模块使用实例
Jun 03 Python
python变量不能以数字打头详解
Jul 06 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
python求最大值最小值方法总结
Jun 25 Python
Python shutil模块用法实例分析
Oct 02 Python
10个Python面试常问的问题(小结)
Nov 20 Python
pandas中read_csv的缺失值处理方式
Dec 19 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
Python爬虫爬取电影票房数据及图表展示操作示例
Mar 27 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 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/11/22 PHP
PHP 引用文件技巧
2010/03/02 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
django 修改server端口号的方法
2018/05/14 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
建筑人员岗位职责
2013/12/25 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers