FBV和CBV区别
FBV
- 就是在视图里使用函数处理请求
- fbv就是在url中一个路径对应一个函数
- 在视图函数中
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
或者
原文地址:https://www.cnblogs.com/yuncong/p/10128980.html
时间: 2024-10-31 20:46:27