在django中默认启动csrf校验,当用户发起post请求时,必须携带csrf_token参数。如果不想使用csrf校验时,可以使用以下方式免除校验。以下方式都是在局部中使用,如果想全局禁用时,需要在settings文件中配置,这种方式不推荐使用。
from django.views.decorators.csrf import csrf_exempt# 免除csrf校验@csrf_exempt def users(request): uses_list = ["柚子", "西瓜"] return HttpResponse(json.dumps(uses_list))
# dispatch是类视图的根方法,通过dispatch进行反射找到其他请求
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
class StudentsView(View):
"""student view"""
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
print("before")
ret = super(StudentsView, self).dispatch(request, *args, **kwargs)
print("after")
return ret(request, *args, **kwargs)
def get(self,*args,**kwargs):
return HttpResponse("get")
def post(self,*args,**kwargs):
return HttpResponse("post")
def put(self,*args,**kwargs):
return HttpResponse("put")
def delete(self,*args,**kwargs):
return HttpResponse("delete")
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
@method_decorator(csrf_exempt,name="dispatch")
class StudentsView(View):
"""student view"""
def get(self,*args,**kwargs):
return HttpResponse("get")
from django.views.decorators.csrf import csrf_exempt
class MyBaseView(object):
@csrf_exempt
def dispatch(self, request, *args, **kwargs):
print("before")
ret = super(MyBaseView, self).dispatch(request, *args, **kwargs)
print("after")
return ret
from django.views.decorators.csrf import csrf_exempt
urlpatterns = [
path('teachers/', csrf_exempt(TeachersView.as_view()), name="teachers"),
]免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
长按识别二维码并关注微信
更方便到期提醒、手机管理