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方法
- 装饰器给单独函数进行设置(认证或跳过认证)