【问题标题】:Attribute Error while runserver command on Django Site在 Django 站点上运行服务器命令时出现属性错误
【发布时间】:2020-06-30 21:44:22
【问题描述】:

任何帮助将不胜感激

浏览器给我这个错误:

AttributeError at /blog/
type object 'Post' has no attribute 'published'
Request Method: GET
Request URL:    htp://mysite.com/blog/ (spelling errror on purpose)
Django Version: 3.0.7
Exception Type: AttributeError
Exception Value:    
type object 'Post' has no attribute 'published'
Exception Location: /root/mysite/blog/views.py in post_list, line 4
Python Executable:  /root/my_env/bin/python3
Python Version: 3.6.9
Python Path:    
    ['/root/mysite',
     '/usr/lib/python36.zip',
     '/usr/lib/python3.6',
     '/usr/lib/python3.6/lib-dynload',
     '/root/my_env/lib/python3.6/site-packages']
     Server time:   Tue, 30 Jun 2020 21:31:42 +0000

服务器给我这个错误

使用 CONTROL-C 退出服务器。 内部服务器错误:/blog/

entTraceback (most recent call last):
File "/root/my_env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
  File "/root/my_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in 
 _get_response
response = self.process_exception_by_middleware(e, request)
  File "/root/my_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in 
_get_response
 response = wrapped_callback(request, *callback_args, **callback_kwargs)
 File "/root/mysite/blog/views.py", line 4, in post_list
 posts = Post.published.all()
 AttributeError: type object 'Post' has no attribute 'publisheder code here

我讨厌购买电子书(即使是那些有良好评论或由知名公司出品的书)但效果不佳。我从 A. Mele 的 django3 书籍样本中得到了这一点。如果他们能让您深入了解您可能遇到的错误,那就太好了。

【问题讨论】:

  • 我可以提供模型或视图文件,我确定错误发生在哪里,再次感谢您的帮助!
  • 您的模型中似乎缺少已发布的属性。请发布您的视图和模型。您是否也应用了所有迁移?
  • 我省略了一些行,但这是我的 models.py from .models import Post def post_list(request): posts = Post.published.all() return render (request,'blog/post/ list.html', {'posts': posts}) def post_detail(request, year, month, day, post): post = get_object_or_404(Post, slug=post, status='published', publish__year=year, publish__month=month , pubish__day=day) return render(request,'blog/post/detail.html',{'post': post})
  • 我很抱歉我在 SO 上发布的新语法不好,这里是我的 views.py def post_list(request): posts = Post.published.all() return render (request,'blog/post /list.html', {'posts': posts}) def post_detail(request, year, month, day, post): post = get_object_or_404(Post, slug=post, status='published',

标签: python python-3.x django linux server


【解决方案1】:

如果您想获得所有帖子,您应该执行以下操作

Post.objects.all()

否则,您应该发布有关问题的更多信息(目标是什么、您做了什么以及何时失败)发布您遇到问题的代码

【讨论】:

  • 谢谢迭戈!我正在尝试发布“已发布的帖子”,您可以在 git hub 上查看分配的源代码。在github.com/guinslym/django-by-example-book/tree/master/…,网址应该是localhost/blog/,而且我有点认为这是因为我无法评估我正在阅读的内容的拼写错误或语法,所以我放弃了错误在这里,我想当我的 BPD 平静下来时,我会看看它,尽管我真的认为它只是语法或“语法”错误,再次感谢!
  • 那里,PublishedManager 类只是查询的处理程序,非常简单的可能在这里失败,你能把这个类和他的分配发布到published。你忘了\? (在恶意线路的情况下)
【解决方案2】:

没有足够的信息,但如果你正在尝试这个, post = Post.objects.filter(status='已发布')
然后检查你的models.py文件中的拼写、大写、小写。并且还要检查你提到的选择选项=的变量。我以为那是状态。

【讨论】:

  • 我从模型和视图文件中添加了一些代码,再次感谢。我确实注意到了一些拼写错误,但在发布后我还没有检查是否会修复。
  • 好的,感谢那些帮助我的人,非常感谢。我终于发现我只是拼错了一些东西,或者我没有正确的目录结构,或者我还没有检查,但也许必须放置“已安装目录”区域,但它最终奏效了。再次感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
相关资源
最近更新 更多