FBV和CBV区别

FBV和CBV区别

FBV

  • 就是在视图里使用函数处理请求
  • fbv就是在url中一个路径对应一个函数

  • 在视图函数中

CBV

  • 就是在视图里使用类处理请求
  • 优点
    1. 提高了代码的复用性,可以使用面向对象的技术,比如说Mixin(多继承)
    2. 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高了代码可读性
  • 代码逻辑

    url

    from django.conf.urls import url
    from myapp.views import MyView
    
    urlpatterns = [
         url(r'^index/$', MyView.as_view()),
    ]

    view.py

    from django.http import HttpResponse
    from django.views import View
    
    class GreetingView(View):
        name = "lin"
        def get(self, request):
             return HttpResponse(self.name)
  • 实现本质: 基于反射实现的
  • 流程:由路由---->as_view()方法--->view中的dispatch方法(反射实现的)

    首先执行url中的as_view()方法

    执行view方法

csrf

  • 403报错原理是:基于中间件的process_view方法
  • 装饰器给单独函数进行设置(认证或跳过认证)

免除csrf_token验证的方法

  • 针对FBV

    from django.views.decorators.csrf import csrf_exempt
    @csrf_exempt  # 这个函数不走认证
    def user(request):
      pass
    #走post请求时,就可以免除验证了
  • 注释setting.py中的46行代码之后单独需要验证的方法
    from django.views.decorators.csrf import csrf_protect
    @csrf_exempt  # 这个函数需要认证
    def user(request):
      pass
    #注释掉setting中的csrf,之后需要认证可以导入
  • 如果是CBV

    或者

原文地址:https://www.cnblogs.com/yuncong/p/10128980.html

时间: 2024-08-30 16:14:35

FBV和CBV区别的相关文章

django中的FBV和CBV

django中请求处理方式有2种:FBV 和 CBV 一.FBV FBV(function base views) 就是在视图里使用函数处理请求. 看代码: urls.py from django.conf.urls import url, include # from django.contrib import admin from mytest import views urlpatterns = [ # url(r'^admin/', admin.site.urls), url(r'^in

FBV和CBV

什么是FBV和CBV呢~~ FBV 基于函数的视图 CBV 基于类的视图 也就是说我们是用函数编写视图~还是类编写视图~~我们来看下两个的简单实现~~ urlpatterns = [ path('admin/', admin.site.urls), path('test_fbv', test_fbv), path('test_cbv', TestCBV.as_view()) ] def test_fbv(request): return HttpResponse("ok") class

一、虚拟环境.二、路由配置主页与404.三、2.x路由分发.四、伪静态.五、request对象.六、FBV与CBV.七、文件上传.

一.虚拟环境 ''' 解决版本共存 1. 用pycharm选择File点击NewProject然后选择virtualenv创建一个纯净环境 2. 打开下载的目录将venv文件夹下的所有文件(纯净的环境)copy到需要指定长期使用的文件夹下 3. 再次创建项目时,将该环境(指定长期使用的文件夹下Scripts文件夹中的python.exe文件)添加到pycharm环境选择(System Interpreter)中 4. 为该环境添加需要处理的版本共存包 ''' 二.路由配置主页与404 ''' 路

1.FBV与CBV

yuan的Blog:https://www.cnblogs.com/yuanchenqi/articles/8715364.html 1.FBV与CBV 1.1 FBV 1.2 CBV 2.CBV源码剖析 2.1 案例 urls from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls),

django之路由分组,路由分发,FBV,CBV,ORM框架

django之路由分组,路由分发,FBV,CBV,ORM框架 今日的内容: a. 路由系统 1. 创建app 2. 路由的分组 3. 路由的分发 - 正则表达式匹配 b. django的orm(模型model) 1. 创建模型的步骤 2. orm基本的增删改查 3. 正向查询和反向查询 注意事项: 1. 前台传给后台一个列表时,后端如何接受: request.POST.getlist(字段名) 2. 前台传给后台一个列表时,需要在ajax请求中增加一个参数: traditional: true

FBV与CBV 及CBV源码分析

FBV与CBV 及CBV源码分析 FBV(Function Based View) 基于函数的视图 基于函数的视图,我们一直在用没啥好讲的,就是导入模块调用函数执行业务 CBV(Class Based View) 基于类的视图 路由 from app01 import views url(r'^haha/',views.zx_view.as_view()), 视图 class zx_view(View): def get(self,request): return render(request,

191112Django fbv和cbv

cbv:类.base.view fbc:函数.base.view from django.contrib import admin from django.urls import path from app import views urlpatterns = [ path('fbv/', views.fbv), path('cbv/', views.CBV.as_view()), ] from django.shortcuts import render,redirect,HttpRespon

Python菜鸟之路:Django 路由补充FBV和CBV

在Python菜鸟之路:Django 路由.模板.Model(ORM)一节中,已经介绍了几种路由的写法及对应关系,那种写法可以称之为FBV: function base view . 今天补充另外一种路由关系的写法:CBV,即:class base view , 也可以看做为面向资源编程的另外一种叫法,类似tornado中的路由写法. 1. 建立路由关系urls.py from app01 import views urlpatterns = [ url(r'^home/', views.Hom

django的FBV和CBV

title: python djano CBV FBV tags: python, djano, CBV, FBV grammar_cjkRuby: true --- python django的function的定义方法 在处理URL的调用方法的function里面,可能会这样定义 Fuction Based View 在视图中用函数来处理请求 def get(): if method == "GET": XXX def post(): if method == "POST