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

前端之家收集整理的这篇文章主要介绍了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'),]


猜你在找的Django相关文章