详解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字符串方法的简单使用
Jul 18 Python
Python设计模式之抽象工厂模式
Aug 25 Python
20招让你的Python飞起来!
Sep 27 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
带你了解python装饰器
Jun 15 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
详解Python self 参数
Aug 30 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
Python定义一个Actor任务
Jul 29 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版(5)
2006/10/09 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
深入浅析python定时杀进程
2016/06/06 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
python中Lambda表达式详解
2019/11/20 Python
python字符串判断密码强弱
2020/03/18 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
常见的软件开发流程有哪些
2015/11/14 面试题
反腐倡廉警示教育活动总结
2014/05/05 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL