django ‘XXX’ object has no attribute 'session'

在使用装饰器验证用户是否登录的时候,装饰器函数里面用到了request参数,从request.session中获取用户是否登录。运行时报错。

# 装饰器函数代码
def auth(func):
    def inner(request, *args, **kwargs):
        if request.session.get('is_login', None):
            response = func(request, *args, **kwargs)
            return response
        else:
            return render(request, 'login.html')
    return inner

# view视图函数代码
class JenkinsLoginView(View):
    @auth
    def get(self,request):
        nick = request.session.get('nick')
        if request.session.get('j_login', None):
            jip_port = request.session['jip_port']
            jtitle = '已登录:' + jip_port
            return render(request, 'jenkins/jenkins_login.html', {'nick': nick, 'jtitle': jtitle})

报错是因为@auth用法错误。

解决办法改为: 

from django.utils.decorators import method_decorator

@method_decorator(auth)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值