@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 @   侬侬发  阅读(440)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示