当包含在其他模板中时,Django通用FormView不显示

时间:2018-06-26 19:38:18

标签: python django django-forms django-templates django-generic-views

首先,当前正在做什么:

我在var rgTime = /^[0-9]{1,2}[:][0-9]{2}$/; function testTimeEntry(t) { if (!rgTime.test(t)){ app.alert("Opps! Time entry is invalid. Only numbers and the colon(:) are allowed."); event.value = ""; } } 中定义了一个表格:

forms.py

我在class EnrollForm(forms.Form): course_id = forms.IntegerField(required=True) def enroll(self): print(self.cleaned_data) 的视图中构建了所述表单:

views.py

我在class EnrollView(FormView): template_name = 'core/enroll.html' form_class = EnrollForm success_url='' def form_valid(self, form): form.enroll() return super().form_valid(form) 中显示它:

enroll.html

因此,当我访问<form action="." method="post"> {% csrf_token %} {{ form }} <input type="submit" value="Enroll" /> </form> 时,我将尽一切可能看到该表格: working form

但是,当我尝试使用

将此文件包含在另一个文件中时
localhost:8000/core/enroll/

在另一个HTML文件中,该文件仅显示按钮,而{% include "core/enroll.html" %} 中的{{ form }}标签不能解析为任何内容,只是默默地失败,显示:

dysfunctional form

EDIT1:这是我尝试包含以下格式的文件:

enroll.html

1 个答案:

答案 0 :(得分:2)

这就是问题。当您访问 localhost:8000 / core / enroll / 时,django调用视图 EnrollView ,您可以在其中定义表单并将其传递给上下文。

在上下文中,它的html页面 enroll.html ,在这种情况下,它知道什么是表单变量。

另一方面,当您访问另一个页面时,永远不会调用 EnrollView 。包含的部分 {%include“ core / enroll.html”%} ,尝试呈现表单,但不知道表单变量是什么。

解决方案:

呈现有问题的html页面的视图(您想在其中看到表单,但不能在其中看到)应在上下文中添加 EnrollForm

context['form'] = EnrollForm()

类似于上面的行。然后您应该可以看到表格。