python - Django 1.1 - 评论 - 'render_comment_form' 返回 TemplateSyntaxError

标签 python django exception django-templates django-comments

我只想使用 Django 的内置评论模块在模板中呈现内置评论表单,但这会返回 TemplateSyntaxError 异常。

我需要帮助调试这个错误,因为在谷歌搜索和使用 Django API 引用之后,我仍然没有取得任何进展。

信息:

这是模板“_post.html”[缩短]:

<div id="post_{{ object.id }}">
<h2>
    <a href="{% url post object.id %}">{{ object.title }}</a>
    <small>{{ object.pub_date|timesince }} ago</small>
    </h2>
    {{ object.body }}
    {% load comments %}
    {% get_comment_count for object as comment_count %}
    <p>{{ comment_count }}</p>
    <!-- Returns 0, because no comments available  -->
    {% render_comment_form for object %}
    <!-- Returns TemplateSyntaxError -->

这是渲染时的异常输出:

Caught an exception while rendering: Reverse for 'django.contrib.comments.views.comments.post_comment'
with arguments '()' and keyword arguments '{}' not found.1  
{% load comments i18n %}
        <form action="{% comment_form_target %}" method="post">
          {% if next %}<input type="hidden" name="next" value="{{ next }}" />{% endif %}
          {% for field in form %}
            {% if field.is_hidden %}
              {{ field }}
            {% else %}
          {% if field.errors %}{{ field.errors }}{% endif %}
          <p
            {% if field.errors %} class="error"{% endif %}
            {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}>
            {{ field.label_tag }} {{ field }}

/posts/urls.py[缩短]:

queryset = {'queryset': Post.objects.all(),
            'extra_context' : {"tags" : get_tags}
           }   
urlpatterns = patterns('django.views.generic.list_detail',
    url('^$',                           'object_list',      queryset,
        name='posts'),
    url('^blog/(?P<object_id>\d+)/$',   'object_detail',    queryset,
        name='post'),
)

/urls.py[缩短]:

urlpatterns = patterns('',
    (r'', include('posts.urls')),
    (r'^comments/$', include('django.contrib.comments.urls')),
)

最佳答案

我遇到了同样的问题,render_comment_form 模板标签触发了它。

问题肯定出在您的 URL 配置上,您的设置方式与我相同:

(r'^comments/$', include('django.contrib.comments.urls'))

正确的做法是去掉'comments/'后面的'$':

(r'^comments/', include('django.contrib.comments.urls'))

否则 django 无法在路径 comments/... 下正确包含所有必要的 url

希望这对您有所帮助。

关于python - Django 1.1 - 评论 - 'render_comment_form' 返回 TemplateSyntaxError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1877940/

相关文章:

python - 如果有 2 个 keras 模型共享层,设置 trainable=False 后要编译哪个模型?

python - 无法运行本地 Celery Worker,没有名为 myapp 的模块

ios - 将异常从 Objective-C 引发回 Javascript

c# - 如何抛出异常并添加包含键和值的我自己的消息?

python - 与 numpy.gradient 的非均匀间距

python - Mitmproxy 上游服务器

python - 使用 PuLP 代码时出现 "int object is not callable"错误

javascript - 如何通过 django View 将参数传递给外部 javascript

python - 从 Django 中的其他模型填充模型?

c# - 在构造函数末尾抛出异常是否会损坏对象?