详解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使用django获取用户IP地址的方法
May 11 Python
Python实现豆瓣图片下载的方法
May 25 Python
Python解析树及树的遍历
Feb 03 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
python日期相关操作实例小结
Jun 24 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
python tkinter实现屏保程序
Jul 30 Python
python字符串替换re.sub()方法解析
Sep 18 Python
Python unittest基本使用方法代码实例
Jun 29 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 Python
Python利器openpyxl之操作excel表格
Apr 17 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创建桌面快捷方式的实例代码
2014/02/17 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
javascript闭包的理解和实例
2010/08/12 Javascript
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
python判断字符串是否纯数字的方法
2014/11/19 Python
使用Python对SQLite数据库操作
2017/04/06 Python
详解K-means算法在Python中的实现
2017/12/05 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
python实现ping命令小程序
2020/12/28 Python
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
市场部专员岗位职责
2013/11/30 职场文书
服务行业个人求职的自我评价
2013/12/12 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
学校交通安全责任书
2014/08/25 职场文书
开发房地产协议书
2014/09/14 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
辛亥革命观后感
2015/06/02 职场文书
分析设计模式之模板方法Java实现
2021/06/23 Java/Android
5行Python代码实现一键批量扣图
2021/06/29 Python
python实现MD5进行文件去重的示例代码
2021/07/09 Python