django 在CBV(类通用视图)和FBV(视图函数)中添加csrf_exempt使用详解

 Pala   2018-01-14 22:17   142 人阅读  0 条评论

如果对CBV和FBV不太了解的同学,可以参考下文:

Django中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, request):
        return render(request,'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'),
]


本文地址:http://chenxm.cc/post/525.html
版权声明:本文为原创文章,版权归 Pala 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?