FBV和CBV区别
Posted yuncong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FBV和CBV区别相关的知识,希望对你有一定的参考价值。
FBV和CBV区别
FBV
CBV
就是在视图里使用类处理请求
优点
- 提高了代码的复用性,可以使用面向对象的技术,比如说Mixin(多继承)
- 可以用不同的函数针对不同的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
或者
以上是关于FBV和CBV区别的主要内容,如果未能解决你的问题,请参考以下文章