每个文档设置django-comments-xtd时,“ str”对象没有属性“ _meta”错误

时间:2018-06-28 17:27:47

标签: django wagtail django-comments

我的网站实际上是a的网站,尽管我不确定这是否有所作为。这是一个简单的博客应用程序,具有用于查看帖子的博客页面和用于显示每个帖子的页面。

我正在按照说明here来设置django-comments-xtd

文档说要实现以下代码,以使评论数显示在每个帖子页面上。

{% get_comment_count for object as comment_count %}
<div class="text-center" style="padding-top:20px">
  <a href="{% url 'blog:post-list' %}">Back to the post list</a>
  &nbsp;&sdot;&nbsp;
  {{ comment_count }} comments have been posted.
</div>

我将实际链接更改为以下链接,因为它就是我网站上的链接(从另一个教程构建)

<p><a href="{{ page.get_parent.url }}">Return to blog</a></p>

据我所知,我不认为像这样更改url会导致问题。我也确保在文件的开头也加载评论。

实际错误是:

Error during template rendering

In template /home/jake/blog/blog/post_page.html, error at line 8
'str' object has no attribute '_meta'

第8行引用此行:

{% get_comment_count for object as comment_count %}

有人可以详细解释这个错误吗?

2 个答案:

答案 0 :(得分:1)

Django django-comments-xtd存储有关对象的注释。在您的情况下,对象是Wagtail页面。更改:

{% get_comment_count for object as comment_count %}

收件人:

{% get_comment_count for page as comment_count %}

object变量是一个空字符串''。这是django-comments-xtd代码中某处发生的演示:

>>> ''._meta
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute '_meta'

Wa尾页面既是模型又是视图。解析网址后,将调用Page.serve。调用get_context并返回一个字典。

{'page': self, 'self': self, 'request': request}

上下文(所有变量及其值)用于填充模板。上下文中没有object

Django模板允许未定义变量。空变量不会引发错误。这个概念可能有用。当上下文不提供变量时,它将默认为空字符串。

当文档显示示例代码并提及{{ object }}obj时,它们表示“对象”。任何物体(比萨饼,汽车,问题)。你的对象。 Wa的默认对象是Page对象。您应该使用page变量。

答案 1 :(得分:1)

为了像我这样的参考目的,只需使用

{% get_comment_count for NameOfModel as comment_count %}

其中 NameOfModel 正是您在 views.py 中定义模型的方式(我使用的是 django)。