当前位置: 首页 > 知识库问答 >
问题:

类没有属性用户

汪胤
2023-03-14

当我试图创建一个帖子时,它会显示这个错误

Exception Type: AttributeError at /home/
Exception Value: 'HomeView' object has no attribute 'user'

而我的 view.py 是

class HomeView(TemplateView):
    template_name = 'home/home.html'

    def get(self, request):
        form = HomeForm()
        posts = Post.objects.all().order_by('-created')
        users = User.objects.exclude(id=request.user.id)
        friend = Friend.objects.get(current_user=request.user)
        friends = friend.users.all()

        args = {
            'form': form, 'posts': posts, 'users': users, 'friends': friends
        }
        return render(request, self.template_name, args)

    @login_required
    def post(self, request):
        if request.method == 'POST':
            form = HomeForm(request.POST or None, request.FILES or None)
            if form.is_valid():
                post = form.save(commit=False)
                post.user = request.user
                post.save()
                return redirect('home:home')
            else:
                return redirect(reverse('home:home'))
        else:
            form = HomeForm()
            args = {'form': form}
            return render(request, self.template_name, args)

追溯:

文件"/home/zola/lib/python3.5/site-pack/django/core/handler/exception.py"在内部39.响应=get_response(请求)

文件“/home/zola/lib/python3.5/site-packages/django/core/handlers/base.py”位于_get_response 187.response=self中。进程异常中间件(e,请求)

文件“/home/zola/lib/python 3.5/site-packages/django/core/handlers/base . py”in _ get _ response 185。response = wrapped _ callback(request,*callback_args,**callback_kwargs)

文件“/home/zola/lib/python3.5/site-packages/django/views/generic/base.py”在视图68.return self中。分派(请求,*args,**kwargs)

在调度88中提交“/家/佐拉/库/python3.5/站点包/django/视图/通用/基地.py”。返回处理程序(请求, *args, **kwargs)

文件“/家/zola/lib/python3.5/site-packages/django/contrib/auth/装饰器.py”,_wrapped_view 22。如果test_func(请求用户):

请帮忙

我已经失踪很久了。使用这种语言。那就帮我纠正这个错误

共有1个答案

有品
2023-03-14

不要使用@login_required装饰器,而是在post方法上使用@method_decorator(login_required),如下所示:

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator

class HomeView(TemplateView):
    # ...
    @method_decorator(login_required)
    def post(self, request):
        # ...

您看到错误消息的原因是因为<code>login_required</code>是一个函数修饰符,所以它希望<code>request</code>对象是传递给视图的第一个参数。您的<code>post</code>定义是一个方法,因此<code>self</code>(<code>HomeView</code>)是传递的第一个参数,这就是<code>login_required</code>试图用作Request实例的原因。

method_decorator用于将每个函数装饰器转换为方法装饰器。有关详细信息,请参阅文档。

 类似资料:
  • 您好,我正在建立一个动物园微服务,包括动物、员工、客户和价格表。我的动物微服务可以工作,但在我的员工微服务中,我遇到了一个错误,即没有为类型“EmployeeModel”找到属性“name”。在问这个问题之前,我已经在网上搜索了几个小时,还有一些类似的问题。我在模型中没有“名字”employee_name,我只是感到困惑,不知道如何修复它。任何指导/建议/信息将不胜感激:)第一次发布,所以我希望我

  • 我一直试图通过ArrayList在Servlet的帮助下在JSP内部打印ResultSet。JDBC部分似乎没有问题。ArrayList可以在JSP内部获得并打印。但是当我想用标记迭代传递到JSP上的列表时,它说我的bean类'purejavaclasses.EmployeeClass'没有属性'id'。我已经尝试了很多不同的解决方案,但都是徒劳的。我不知道该怎么做。我是一个完全的JavaEE初学

  • 问题内容: 那么是否可以仅针对最特定的类获取属性的字典/列表?到目前为止,我正在使用 但这也将给我提供超类中定义的服装。有什么办法可以避免这种情况? 问题答案: 摘自python文档 类具有由字典对象实现的名称空间。类属性引用将转换为此字典中的查找,例如Cx被转换为C . dict [“ x”](尽管特别是对于新式类,有许多允许使用其他方式定位属性的钩子)。如果找不到属性名称,则在基类中继续搜索属

  • 问题内容: 我收到以下错误: 类型对象“ datetime.datetime”没有属性“ datetime” 在下一行: 有人知道错误的原因吗? 我导入日期时间是否有帮助 谢谢 问题答案: 日期时间是一个允许处理日期,时间和日期时间(所有都是数据类型)的模块。这意味着它既是顶级模块,又是该模块中的一种类型。这很令人困惑。 您的错误可能是基于模块的混乱命名,而您或您正在使用的模块已经导入了。 但是,

  • 我的代码返回这个错误"'NoneType对象没有属性'发送'" 这是我的密码 导入discord从discord导入操作系统。ext导入命令 客户=不和谐。客户() 类日志记录(commands.Cog):“为您设置日志记录” def设置(客户端):客户端。添加_cog(日志记录(客户端)) 我是在我的齿轮,而不是在主要。派克