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)

Django中,当你遇到错误"'list' object has no attribute 'read'"时,这通常是因为你在代码中将一个列表对象(list object)当作文件对象(file object)来使用了。这个错误可能出现在你尝试读取文件内容的地方。为了解决这个问题,你可以检查你的代码,确保你正在使用正确的文件对象来进行读取操作。 以下是一些可能导致这个错误的常见情况和解决方法: 1. 错误的文件对象类型:你可能错误地将一个列表对象传递给了需要文件对象的函数或方法。你可以检查你的代码,确保你正在使用正确的文件对象类型。 2. 文件路径错误:你可能提供了一个错误的文件路径,导致无法找到文件。你可以检查文件路径是否正确,并确保文件存在。 3. 文件未打开:你可能在尝试读取文件之前没有正确地打开文件。在使用文件对象之前,你需要使用`open()`函数打开文件,并在使用完毕后使用`close()`函数关闭文件。 4. 文件未关闭:你可能在读取文件后没有正确地关闭文件。在使用完文件后,你应该使用`close()`函数关闭文件,以释放资源。 以下是一个示例代码,演示了如何正确地读取文件内容: ```python file_path = "path/to/file.txt" try: file = open(file_path, "r") content = file.read() file.close() print(content) except FileNotFoundError: print("File not found.") except Exception as e: print("An error occurred:", str(e)) ``` 请注意,这只是一个示例代码,你需要根据你的具体情况进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值