详解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字符串替换的2种方法
Nov 30 Python
Python数组遍历的简单实现方法小结
Apr 27 Python
Django接受前端数据的几种方法总结
Nov 04 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
python执行使用shell命令方法分享
Nov 08 Python
pandas数据预处理之dataframe的groupby操作方法
Apr 13 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
Python列表的切片实例讲解
Aug 20 Python
Django Model中字段(field)的各种选项说明
May 19 Python
详解用Python爬虫获取百度企业信用中企业基本信息
Jul 02 Python
详解运行Python的神器Jupyter Notebook
Jun 03 Python
python中redis包操作数据库的教程
Apr 19 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在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
php把session写入数据库示例
2014/02/26 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
JS短路原理的应用示例 精简代码的途径
2013/12/13 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
js实现微信聊天界面
2020/08/09 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
django如何实现视图重定向
2019/07/24 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
收银员的岗位职责范本
2014/02/04 职场文书
求职面试个人自我评价
2014/02/28 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
Android中的Launch Mode详情
2022/06/05 Java/Android