【问题标题】:Django 1.1 - comments - 'render_comment_form' returns TemplateSyntaxErrorDjango 1.1 - 评论 - 'render_comment_form' 返回 TemplateSyntaxError
【发布时间】:2010-12-25 01:51:42
【问题描述】:

我想简单地在模板中呈现一个内置的评论表单,使用 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')),
)

【问题讨论】:

    标签: python django exception django-templates django-comments


    【解决方案1】:

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

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

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

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

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

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

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      这个错误是说它找到了视图django.contrib.comments.views.comments.post_comment

      但没有传递 args () 或 kwargs{}。

      它没有将 object.id 的值传递到 url。

      取出url标签,看看&lt;div id="post_{{object.id}}"&gt;的id是否反映了正确的object.id

      【讨论】:

        【解决方案3】:

        我今天也遇到了同样的问题。我在 urls.py 中引用了一个我尚未创建的视图。

        来自http://docs.djangoproject.com/en/dev/topics/http/urls/#reverse

        作为确定哪些 URL 名称的一部分 映射到哪些模式,reverse() 功能必须导入您的所有 URLconf 文件并检查名称 每个视图。这涉及导入 每个视图函数。如果有的话 导入您的任何内容时出现错误 查看函数,会导致 reverse() 引发错误,即使 那个视图功能不是你的那个 正在尝试逆转。

        确保您引用的所有视图 在您的 URLconf 文件中存在并且可以是 正确导入。不包括 引用您没有的视图的行 还没有写,因为这些观点会 不可导入。

        【讨论】:

          【解决方案4】:

          错误信息提示找不到反向网址:

          
             django.contrib.comments.views.comments.post_comment
          

          因此,您的网址中基本上没有正确配置某些内容。如果无法看到更多的东西是如何设置的,就很难确切地知道是什么。

          也许尝试重新排序 urls.py 中包含的 urls 模式,以强制 django cmets url 到顶部?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-09-10
            • 2014-01-03
            • 1970-01-01
            • 1970-01-01
            • 2011-10-06
            • 1970-01-01
            • 2014-12-11
            • 2018-02-15
            相关资源
            最近更新 更多