详解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使用代理抓取网站图片(多线程)
Mar 14 Python
Python中os.path用法分析
Jan 15 Python
Python Tkinter GUI编程入门介绍
Mar 10 Python
python用户管理系统
Mar 13 Python
python 实现敏感词过滤的方法
Jan 21 Python
深度辨析Python的eval()与exec()的方法
Mar 26 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
python计算n的阶乘的方法代码
Oct 25 Python
Python pandas如何向excel添加数据
May 22 Python
Python中pass的作用与使用教程
Nov 13 Python
python实现简单文件读写函数
Feb 25 Python
Pandas数据类型之category的用法
Jun 28 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/03/27 PHP
PHP的explode和implode的使用说明
2011/07/17 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
javascript实用方法总结
2015/02/06 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
python操作MongoDB基础知识
2013/11/01 Python
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
实例讲解python中的序列化知识点
2018/10/08 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
python新手学习可变和不可变对象
2020/06/11 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
2014班子成员自我剖析材料思想汇报
2014/10/01 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
详解Python类和对象内容
2021/06/22 Python
muduo TcpServer模块源码分析
2022/04/26 Redis