微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如果对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,'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'),]


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐