函数装饰器在类方法中的使用方法

CBV中加装饰器

要在CBV视图中使用我们上面的check_login装饰器,有以下三种方式:

都要先导入这个方法: from django.utils.decorators import method_decorator

1. 加在CBV视图的get或post方法上

2. 加在dispatch方法上

3. 直接加在视图类上,但method_decorator必须传 name 关键字参数(如果get方法和post方法都需要登录校验的话就写两个装饰器。

 

这是我之前写的登录装饰器。

# 登录权限控制(session版)
def check_login(func):
    @wraps(func)
    def inner(request, *args, **kwargs):

        if request.session.get("user"):
            return func(request, *args, **kwargs)
        else:
            next_url = request.path_info
            print(next_url)
            return redirect("/app01/login/?next_url={}".format(next_url))

    return inner

这是函数版的装饰器,直接在类中使用是不行的。

1,直接在get方法或者post方法中加

class UserInfo(views.View):
    @method_decorator(check_login, name="get")
    def get(self, request):
        return HttpResponse("这是一个UserInfo页面!!!")

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值