ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Django-csrf装饰器FBV和CBV的区别

2019-10-04 20:55:19  阅读:295  来源: 互联网

标签:FBV self request dispatch Django CBV csrf method def


# csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。
# csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件

from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt,csrf_protect

# 在FBV中可以加在方法上
@method_decorator(csrf_exempt)
def  reg(request):
    .....

# 在CBV中必须加在dispatch上
# 方法一
class HomeView(View):

    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        # 在请求到来之前,都会执行dispatch函数
        return super(HomeView, self).dispatch(request, *args, **kwargs)

    def get(self, request):
        return render(request, "home.html")

    def post(self, request):
        print("Home View POST method...")
        return redirect("/index/")

# 方法二
@method_decorator(csrf_exempt,name='dispatch')
class HomeView(View):

    def get(self, request):
        return render(request, "home.html")

    def post(self, request):
        print("Home View POST method...")
        return redirect("/index/")

 

标签:FBV,self,request,dispatch,Django,CBV,csrf,method,def
来源: https://www.cnblogs.com/wtil/p/11623237.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有