2009-12-10 3 views
3

Я хочу просто визуализировать встроенную форму комментария в шаблоне, используя встроенный модуль комментариев Django, но это возвращает исключение TemplateSyntaxError.Django 1.1 - комментарии - 'render_comment_form' возвращает TemplateSyntaxError

Мне нужна помощь в отладке этой ошибки, пожалуйста, потому что после поиска в Интернете и использования ссылки API Django я все еще не получаю.

Информация:

Это шаблон '_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 --> 

Это выход Exception, при визуализации:

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 }} 

/сообщений/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[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')) 

в противном случае Джанго не может должным образом включать в себя все необходимые проверках ссылок на комментариях пути/...

Надеется, что это помогает.

1

Сообщение об ошибке указывается, что он не может найти обратный адрес для:


    django.contrib.comments.views.comments.post_comment 

Так что в основном то, что не настроен прямо в ваших URL-адресов , Не имея возможности увидеть больше о том, как все наладится, трудно точно знать, что именно.

Возможно, попробуйте переупорядочить шаблон URL-адресов, включив в ваш urls.py, чтобы заставить комментарии django ссылаться на вершину?

1

У меня была такая же проблема сегодня. Я ссылался на представление в urls.py, которое я еще не создал.

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

В рамках разработки названия которых URL карту, в которой модель, функция обратный() должна импортировать все ваши привязки файлов и проверьте имя каждый вид. Это включает в себя импорт каждой функции просмотра . Если есть какие-либо ошибки при импорте любой из ваших функций просмотра , это вызовет reverse(), чтобы поднять ошибку, даже если , что функция просмотра не та, которую вы пытаетесь изменить.

Убедитесь, что все ваши ссылки в ваших файлах URLconf существуют и могут быть правильно импортированы . Не включайте в себя строк, которые ссылаются на то, что вы не указали , потому что эти взгляды будут быть небезопасными.

1

Эта ошибка говорит, что он нашел вид django.contrib.comments.views.comments.post_comment

, но не были приняты не арг() или kwargs {}.

Его не передают значение для object.id в URL.

Вынимает URL-адрес метку и посмотреть, если идентификатор <div id="post_{{object.id}}"> отражает правильный object.id

Смежные вопросы