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

“NewPost”对象没有属性“user”(已关闭)

漆雕兴平
2023-03-14
class NewPost(CreateView):
    form_class = PostForm
    template_name = 'post_form.html'

@login_required
def form_valid(self,form):
    post = form.save(commit=False)
    post.user= self.request.user
    post.save()
    return redirect('website:details', post=post)
class PostForm(forms.ModelForm):

    class Meta:
        model = Post
        fields=('title','description')
class Post(models.Model):
    user =  models.ForeignKey(User, on_delete =models.CASCADE)
    title = models.CharField(max_length = 500, blank = False)
    description = models.TextField()

def __str__(self):
    return self.title
<div class ="container-fluid">
<form method="post">
    {% csrf_token %}

    {{ form.as_p }}
    <input type="submit" value="Save">
</form>
</div>
AttributeError at /website/add/ <br>
'NewPost' object has no attribute 'user'<br>
Request Method: POST <br>
Request URL:    http://127.0.0.1:8000/website/add/<br>
Django Version: 1.9 <br>
Exception Type: AttributeError <br>
Exception Value:    <br>
'NewPost' object has no attribute 'user' <br>
Exception Location: C:\Python27\lib\site-packages\django-1.9-py2.7.egg\django\contrib\auth\decorators.py in _wrapped_view, line 22 <br>
Python Executable:  C:\Python27\python.exe<br>
Python Version: 2.7.14 <br>
Python Path:    <br>
['C:\\Users\\as_couple\\Desktop\\STUDENTTRACKERSYSTEM',
 'C:\\WINDOWS\\SYSTEM32\\python27.zip',
 'C:\\Python27\\DLLs',<br>
 'C:\\Python27\\lib',<br>
 'C:\\Python27\\lib\\plat-win',<br>
 'C:\\Python27\\lib\\lib-tk',<br>
 'C:\\Python27', <br>
 'C:\\Python27\\lib\\site-packages', <br>
 'C:\\Python27\\lib\\site-packages\\django_admin-1.1.1-py2.7.egg', <br>
 'C:\\Python27\\lib\\site-packages\\django_excel_response2-2.0.8-py2.7.egg',<br>
 'C:\\Python27\\lib\\site-packages\\django_six-1.0.4-py2.7.egg',<br>
 'C:\\Python27\\lib\\site-packages\\django-1.9-py2.7.egg']<br>

更新的文件:

回溯:`文件“c:\python27\lib\site-packages\django-1.9-py2.7.eg\django\core\handlers\base.py”在get_response 149中。响应=self.process_exception_by_middleware(e,request)

get_response 147中的文件“C:\python27\lib\site-packages\django-1.9-py2.7.eg\django\core\handlers\base.py”。响应=wrapped_callback(request,*callback_args,**callback_kwargs)

视图68中的文件“C:\python27\lib\site-packages\django-1.9-py2.7.eg\django\views\generic\base.py”。返回self.dispatch(request,*args,**kwargs)

post 255中的文件“C:\python27\lib\site-packages\django-1.9-py2.7.eg\django\views\generic\edit.py”。返回super(BaseCreateView,self).post(request,*args,**kwargs)

文件“C:\python27\lib\site-packages\django-1.9-py2.7.eg\django\views\generic\edit.py”在后221中。返回self.form_valid(form)

文件“C:\python27\lib\site-packages\django-1.9-py2.7.egg\django\contrib\auth\decorators.py”在_wrapped_view 22中。如果test_func(request.user):

共有1个答案

锺离刚洁
2023-03-14

我以为

class NewPost(CreateView):
    form_class = PostForm
    template_name = 'post_form.html'

@login_required
def form_valid(self,form):
    post = form.save(commit=False)
    post.user= self.request.user
    post.save()
    return redirect('website:details', post=post)

是未缩进的,并且def form_valid是类的一个方法。使用基于类的视图时,不能直接修饰方法。相反,您需要修饰分派,如下所示

class NewPost(CreateView):
    form_class = PostForm
    template_name = 'post_form.html'

def form_valid(self,form):
    post = form.save(commit=False)
    post.user= self.request.user
    post.save()
    return redirect('website:details', post=post)

@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
    return super(NewPost, self).dispatch(*args, **kwargs)

也就是说,错误不是在form_valid中激发的,而是在装饰器代码中激发的

 类似资料:
  • 情况 我正在修改这个YouTube系列中的GitHub项目,这是一个演示原始应用程序如何运行的演示。 密码 model.py url.py views.py forms.py navbar.html account_admin_settings.html 错误 尝试过的解决方案 我的错误不在登录处,我不确定它在哪里-属性错误:用户对象没有属性is_admin 我以前做过迁移,做过迁移-Django

  • 这是我得到的错误,我无法得到管理员登录屏幕。 属性错误在 /admin/ 'WSGIRequest' 对象没有属性 'user' 请求方法: GET 请求 URL: http://127.0.0.1:8000/admin/ Django 版本: 2.1.2 异常类型: 属性错误异常值: 'WSGIRequest' 对象没有属性 “用户” 异常位置: C:\用户\海王星\AppData\本地\程序\

  • 问题内容: 但是,这给了我一个AttributeError,我将在下面粘贴StackTrace。这完全是我从示例来源中粘贴的错误。我确实使用PeeWee代替了SQLAlchemy,但是由于这段代码对数据库没有任何作用,但是我不知道为什么会这样。 有人知道我在这里做错什么吗? 问题答案: g.user全局 如果你要注意的话,你会记得在登录视图功能中我们检查以确定用户是否已经登录。要实现此目的,我们将

  • 这是我的密码: 这条线给了我错误 "属性错误:'浮点'对象没有属性'exp'"。X,t是Numpy ndarray。

  • 问题内容: 如果用户未登录,我想设置一个cookie。 My中间件: 最后添加到中。 问题: 错误:“ WSGIRequest”对象没有属性“ user” 为什么,当我已经激活身份验证和会话中间件时? 另外,有些页面在出现此错误的地方工作流畅。 我究竟做错了什么 ? 问题答案: 根据FineManual: 因此,我想你最好在auth和会话中间件之前添加你的中间件(假设它仅处理响应)。 话虽这么说,

  • 问题内容: 我正在开发Django应用程序,并且出现以下错误 我的模型是这样构造的 我应该做什么? 问题答案: 首先,您必须非常小心地重写以具有非可选参数。记住,每次从一个查询集中获取一个对象时,它将被调用! 这是您想要的正确代码: 如果您只使用该对象的子类,我强烈建议在Animal上设置abstract选项。这样可以确保不为动物创建表,而仅为绵羊(等)创建表。如果未设置abstract,则将创建