FBV和CBV区别

FBV和CBV区别

FBV

  • 就是在视图里使用函数处理请求

  • fbv就是在url中一个路径对应一个函数

    5QP2t2.png

  • 在视图函数中

    5QPR3a.png

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()方法

    img

    执行view方法

    img

    5QM1Au.png

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

    5Q0112.png

    或者

    5Q0Aqa.png

转载于:https://www.cnblogs.com/yuncong/p/10128980.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值