2009-12-10 84 views
3

我想簡單地呈現在模板中內置的評論形式,使用Django的內置模塊評論,但這返回TemplateSyntaxError異常。的Django 1.1 - 評論 - 「render_comment_form」返回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 }} 

/帖/網址.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[shortened]:

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

回答

6

我有同樣的確切問題,render_comment_form模板標籤被觸發了。

的問題當然是你的URL的配置,你必須將其設置方式相同的我所做的:

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

正確的方法是後刪除「$」的意見/':

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

否則Django中不能正確包含路徑下的評論所有必要的網址/ ...

希望這有助於。

1

該錯誤消息指出它無法找到一個反向鏈接:


    django.contrib.comments.views.comments.post_comment 

所以基本東西是不正確的網址配置。如果不能看到更多關於如何設置的東西,就很難確切地知道是什麼。

也許嘗試重新排序的URL模式包括在你的urls.py,強迫Django的意見網址頂端?

1

今天我有同樣的問題。我在urls.py中引用了一個我尚未創建的視圖。

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

正如找出哪些URL名稱 映射到反向() 功能有哪些模式,導入所有 URL配置文件和檢查的 每個視圖名稱的一部分。這涉及導入 每個視圖功能。如果在導入任何 視圖函數時出現任何 錯誤,則會導致 反向()引發錯誤,即使 該視圖函數不是 正在嘗試反轉的函數。

確保在URLconf文件中引用 的任何視圖存在,並且可以正確導入 。不包括 行參考您還沒有 書面意見,因爲這些意見將 不可導入。

1

此錯誤是說,它發現視圖django.contrib.comments.views.comments.post_comment

但無參數()或kwargs {}獲得通過。

它不傳遞object.id的值到url中。

取出網址標籤,看看<div id="post_{{object.id}}">的id反映了適當的object.id