所谓CSRF,便是跨站请求伪造,Django为我们内置了相关的功能 ,以下是我做的相关记录。
1.FBV如何使用CSRF
针对FBV情况下,需要使用此功能,我们仅需要操作如下2步即可.
如上两步便可.
如果开启了全局的csrf中间件,那么它针对的是全站使用此功能.若某个FBV函数不想使用此功能.则如下做法:
@csrf_exempt
def login(request):
pass
这样的话,针对login的请求就不会受csrf的限制了.csrf_protect与之相反.
2.CBV如何使用CSRF
fromdjango.views import View
方法1.
class LoginView(View):
@csrf_exempt
def dispatch(self,request,*args,**kwargs):
returnsuper(LoginView,self).dispatch(request,*args,**kwargs)
def post():
if request.method == 'POST':
username = request.POST.get("username",None)
password = request.POST.get("password",None)
if username == "jacky" and password=='jacky':
return HttpResponse("Login success!")
return render(request,"login.html")
方法2
@method_decorator(csrf_exempt)
class LoginView(View):
def get(self,request):
return render(request,"login.html")
def post(self,request):
username = request.POST.get("username",None)
password = request.POST.get("password",None)
if username == "jacky" and password=='jacky':
return HttpResponse("Login success!")
领取专属 10元无门槛券
私享最新 技术干货