尝试将表单包含在{%include%}的其他应用模板中,但获取“TemplateDoesNotExist”

时间:2018-05-14 12:15:15

标签: django django-models django-forms django-templates

目前,我可以对帖子发表评论,但我必须转到单独的评论创建页面。我想在组详细信息页面的帖子下面添加评论表单。我曾尝试使用{%include%},但似乎无法找到表单。这是可能的,因为我试图在不同的应用程序模板上呈现表单而不是form.py和comment_form.html(我在'comments'应用程序中创建表单的表单和模板,我正在尝试将表单包含在详细信息页面的“组”应用程序中。这是相关文件。

评论/ forms.py

from django import forms

from .models import Comment

class CommentForm(forms.ModelForm):

    class Meta:
        model = Comment
        fields = ('body',)

comments / comment_form.html

<h2>this is the comment form</h2>
<form class="post-form" method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit" class="save btn btn-default">Save</button>
</form>

groups / views.detail:

def detail(request, group_id):
    group = get_object_or_404(Group, pk= group_id)
    posts = Post.objects.filter(group__id = group_id)
    form = CommentForm()

    return render(request, 'groups/detail.html', {'group': group, 'posts':posts, 'form':form})

基团/ detail.html:

{% include form %}

这是负责创建评论的网址(comments / urls.py):

from . import views
from django.urls import path

app_name = 'comments'

urlpatterns = [
    path('<int:post_id>/create/', views.create, name='create'),
    path('delete/<int:group_id>/<int:post_id>/<int:comment_id>', views.delete, name='delete'),
]

再次,它无法找到模板,因为我必须让'groups'应用程序知道'comment_form.html'的存在。我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

如果你想加入comments/comment_form.html,你应该这样做:

{% include 'comments/comment_form.html' %}

目前,您{% include form %}将使用变量form - 这没有意义,因为form是表单实例CommentForm(),它不是模板名称。