详解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实现360皮肤按钮控件示例
Feb 21 Python
Python的语言类型(详解)
Jun 24 Python
python中 chr unichr ord函数的实例详解
Aug 06 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
对django的User模型和四种扩展/重写方法小结
Aug 17 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
Apr 22 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
keras分类之二分类实例(Cat and dog)
Jul 09 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
Python图片处理之图片裁剪教程
May 27 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
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
2018/02/01 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python作用域与名字空间原理详解
2020/03/21 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
白酒业务员岗位职责
2013/12/27 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS
Python的property属性详细讲解
2022/04/11 Python
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript