免除csrf校驗
在django中默認啟動csrf校驗,當用戶發(fā)起post請求時,必須攜帶csrf_token參數(shù)。如果不想使用csrf校驗時,可以使用以下方式免除校驗。以下方式都是在局部中使用,如果想全局禁用時,需要在settings文件中配置,這種方式不推薦使用。
一、函數(shù)免除csrf校驗
from django.views.decorators.csrf import csrf_exempt# 免除csrf校驗@csrf_exempt
def users(request):
uses_list = ["柚子", "西瓜"]
return HttpResponse(json.dumps(uses_list))
二、對類免除csrf校驗
第一種方式
# 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
第四種,在url中添加
from django.views.decorators.csrf import csrf_exempt
urlpatterns = [
path('teachers/', csrf_exempt(TeachersView.as_view()), name="teachers"),
]
到此這篇關于django免除csrf校驗的方法的文章就介紹到這了,更多相關django免除csrf校驗內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!