Django FBV与CBV使用之CSRF

所谓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!")

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181028G19UGK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券