'str' 根据文档设置 django-comments-xtd 时对象没有属性“_meta”错误
'str' object has no attribute '_meta' error when setting up django-comments-xtd per documentation
我的网站实际上是一个 wagtail 网站,尽管我不确定这是否有所不同。这是一个简单的博客应用程序,带有一个用于查看 post 的博客页面和一个用于显示每个 post.
的页面
我按照说明 here 来设置 django-comments-xtd
文档说要实现以下代码才能在每个 post 页面上显示评论数。
{% 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>
⋅
{{ comment_count }} comments have been posted.
</div>
我将实际的 link 更改为以下内容,因为这是我网站中的内容(根据另一个教程构建)
<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 %}
有人可以更详细地解释这个错误吗?
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'
Wagtail 页面既是模型又是视图。当 url 被解析时 Page.serve is called. That calls get_context 和 returns 一个字典。
{'page': self, 'self': self, 'request': request}
上下文——所有变量及其值——用于填充模板。上下文中没有object
!
Django 模板允许变量未定义。空变量不会抛出错误。这个概念可能很有用。当上下文不提供变量时,它将默认为空字符串。
当文档显示示例代码并提到 {{ object }}
或 obj
时,它们的意思是 'an object'。任何对象(比萨饼、汽车、问题)。你的对象。 Wagtail 中的默认对象是 Page 对象。您应该使用页面变量。
为了像我这样的参考目的,只需使用
{% get_comment_count for NameOfModel as comment_count %}
其中 NameOfModel 正是您在 views.py 中定义模型的方式(我使用的是 django)。
我的网站实际上是一个 wagtail 网站,尽管我不确定这是否有所不同。这是一个简单的博客应用程序,带有一个用于查看 post 的博客页面和一个用于显示每个 post.
的页面我按照说明 here 来设置 django-comments-xtd
文档说要实现以下代码才能在每个 post 页面上显示评论数。
{% 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>
⋅
{{ comment_count }} comments have been posted.
</div>
我将实际的 link 更改为以下内容,因为这是我网站中的内容(根据另一个教程构建)
<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 %}
有人可以更详细地解释这个错误吗?
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'
Wagtail 页面既是模型又是视图。当 url 被解析时 Page.serve is called. That calls get_context 和 returns 一个字典。
{'page': self, 'self': self, 'request': request}
上下文——所有变量及其值——用于填充模板。上下文中没有object
!
Django 模板允许变量未定义。空变量不会抛出错误。这个概念可能很有用。当上下文不提供变量时,它将默认为空字符串。
当文档显示示例代码并提到 {{ object }}
或 obj
时,它们的意思是 'an object'。任何对象(比萨饼、汽车、问题)。你的对象。 Wagtail 中的默认对象是 Page 对象。您应该使用页面变量。
为了像我这样的参考目的,只需使用
{% get_comment_count for NameOfModel as comment_count %}
其中 NameOfModel 正是您在 views.py 中定义模型的方式(我使用的是 django)。