django 1.1- 댓글 - 'render_comment_form'은 templatesyntaxerror를 반환합니다.
-
18-09-2019 - |
문제
Django의 내장 주소 모듈을 사용하여 템플릿에서 내장 주석 양식을 단순히 렌더링하고 싶지만 TemplatesyNtaxError 예외를 반환합니다.
인터넷 검색과 Django API 참조를 사용한 후에도 여전히 더 멀지 않기 때문에이 오류를 디버깅하는 데 도움이 필요합니다.
정보 :
이것은 템플릿 '_post.html'[shortened]입니다.
<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] : Shortened] :
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')),
)
해결책
render_comment_form 템플릿 태그가 트리거되었습니다.
문제는 확실히 URL 구성과 관련이 있습니다. 내가 한 것과 같은 방식으로 설정했습니다.
(r'^comments/$', include('django.contrib.comments.urls'))
올바른 방법은 '댓글/'후 '$'를 제거하는 것입니다.
(r'^comments/', include('django.contrib.comments.urls'))
그렇지 않으면 Django는 경로 주석 아래에 필요한 모든 URL을 제대로 포함시킬 수 없습니다.
도움이 되었기를 바랍니다.
다른 팁
오류 메시지는 다음의 역 URL을 찾을 수 없음을 나타냅니다.
django.contrib.comments.views.comments.post_comment
따라서 기본적으로 URL에서 무언가가 구성되지 않았습니다. 물건을 설정하는 방법을 더 많이 볼 수 없다면 정확히 무엇을 아는 것은 어렵습니다.
urls.py에 포함 된 URL 패턴을 다시 주문하여 Django 주석 URL을 맨 위로 강요할까요?
오늘도 같은 문제가있었습니다. 나는 아직 만들지 않은 urls.py에서보기를 언급하고있었습니다.
에서 http://docs.djangoproject.com/en/dev/topics/http/urls/#reverse
어떤 URL 이름이 어떤 패턴을 맵핑하는지 확인하는 것의 일부로, Reverse () 함수는 모든 URLConf 파일을 가져 와서 각보기의 이름을 검사해야합니다. 여기에는 각보기 기능을 가져 오는 것이 포함됩니다. 뷰 함수를 가져 오는 동안 오류가 있으면 뷰 함수가 반전하려는 것이 아니더라도 Reverse ()가 오류를 일으킬 수 있습니다.
URLCONF 파일에서 참조하는 모든 뷰가 존재하고 올바르게 가져올 수 있는지 확인하십시오. 아직 작성하지 않은 참조 조회수를 포함하지 마십시오. 이러한 뷰는 가져올 수 없기 때문입니다.
이 오류는보기를 찾았다 고 말합니다 django.contrib.comments.views.comments.post_comment
그러나 args () 또는 kwargs {}는 통과되지 않았습니다.
Object.id의 값을 URL로 전달하지 않습니다.
URL 태그를 꺼내고 ID가 <div id="post_{{object.id}}">
적절한 개체를 반영합니다