详解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中readline判断文件读取结束的方法
Nov 08 Python
使用Python制作获取网站目录的图形化程序
May 04 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
Python回文字符串及回文数字判定功能示例
Mar 20 Python
python修改list中所有元素类型的三种方法
Apr 09 Python
Django实现全文检索的方法(支持中文)
May 14 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 Python
Python递归实现打印多重列表代码
Feb 27 Python
Python生成器常见问题及解决方案
Mar 21 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
pytorch 中autograd.grad()函数的用法说明
May 12 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 cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
JQuery右键菜单插件ContextMenu使用指南
2014/12/19 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
对python append 与浅拷贝的实例讲解
2018/05/04 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
tensorboard显示空白的解决
2020/02/15 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
python设置表格边框的具体方法
2020/07/17 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
献爱心标语
2014/06/21 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
三峡导游词
2015/01/31 职场文书
工程部部长岗位职责
2015/02/12 职场文书
会议主持词开场白
2015/05/28 职场文书