如果对CBV和FBV不太了解的同学,可以参考下文:
在django中基于CBV(类通用视图)和FBV(视图函数)中添加csrf_exempt的方法是不一样,如图所示:
FBV(视图函数)
from django.views.decorators.csrf import csrf_exempt from django.shortcuts import render @csrf_exempt def login(request): return render(request,'login.html')
而使用CBV如果按照FBV(视图函数)来写,django会提示错误403错误
Forbidden (CSRF cookie not set.): /login.html
正确写法如下:
第一种方法:
from django.views import View from django.shortcuts import render from django.views.decorators.csrf import csrf_exempt class LoginView(View): def get(self, request): return render(request,'login.html') def post(self,'login.html') @csrf_exempt def dispatch(self, *args, **kwargs): return super(LoginView, self).dispatch(*args, **kwargs)
第二种方法:在urls.py中配置
from django.conf.urls import url from django.views.decorators.csrf import csrf_exempt import views urlpatterns = [ url(r'^login/$', csrf_exempt(views.LoginView.as_view()), name='loginview'),]