@csrf_exempt

在Django中对于基于函数的视图我们可以 @csrf_exempt 注解来标识一个视图可以被跨域访问。那么对于基于类的视图,我们应该怎么办呢?

简单来说可以有两种访问来解决

方法一:在类的 dispatch 方法上使用 @csrf_exempt
from django.views.decorators.csrf import csrf_exempt

class MyView(View):

def get(self, request):
return HttpResponse("hi")

def post(self, request):
return HttpResponse("hi")

@csrf_exempt
def dispatch(self, *args, **kwargs):
return super(MyView, 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'^myview/$', csrf_exempt(views.MyView.as_view()), name='myview'),
]

 

在views.py中

from django.views.generic.base import View
class ueditor(View):

@csrf_exempt
def post(self, request):
print(request.POST.get('abc', ""))
return render(request, "ueditor.html")
这样写是csrf_exempt是不会生效的

只有继承了django rest framework的apiview有才用:

from rest_framework.views import APIView
class ueditor(APIView):

@csrf_exempt
def post(self, request):
print(request.POST.get('abc', ""))
return render(request, "ueditor.html")

posted @ 2022-04-13 15:28  侬侬发  阅读(389)  评论(0编辑  收藏  举报