详解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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
django 自定义用户user模型的三种方法
Nov 18 Python
Python实现获取网站PR及百度权重
Jan 21 Python
Python的Flask开发框架简单上手笔记
Nov 16 Python
python计算两个矩形框重合百分比的实例
Nov 07 Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 Python
python构建指数平滑预测模型示例
Nov 21 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 Python
Python中npy和mat文件的保存与读取
Apr 24 Python
Python 匹配文本并在其上一行追加文本
May 11 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对大文件进行读取操作的实现代码
2013/01/23 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
Python 通过pip安装Django详细介绍
2017/04/28 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
python实现顺序表的简单代码
2018/09/28 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
python 等差数列末项计算方式
2020/05/03 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
大专自我鉴定范文
2013/10/23 职场文书
迎元旦广播稿
2014/02/22 职场文书
少年闰土教学反思
2014/02/22 职场文书
交通安全标语
2014/06/06 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
追讨欠款律师函
2015/05/27 职场文书
详解JAVA的控制语句
2021/11/11 Java/Android
css3 文字断裂效果
2022/04/22 HTML / CSS