Python Django generic FormView包含在其他模板中时不显示

Python Django generic FormView包含在其他模板中时不显示,python,django,django-forms,django-templates,django-generic-views,Python,Django,Django Forms,Django Templates,Django Generic Views,首先,目前正在发挥作用的是: 我在forms.py中定义了一个表单: class EnrollForm(forms.Form): course_id = forms.IntegerField(required=True) def enroll(self): print(self.cleaned_data) class EnrollView(FormView): template_name = 'core/enroll.html' form_cl

首先,目前正在发挥作用的是:

我在
forms.py
中定义了一个表单:

class EnrollForm(forms.Form):
    course_id = forms.IntegerField(required=True)

    def enroll(self):
        print(self.cleaned_data)
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)
我在
views.py中的视图中构建所述表单:

class EnrollForm(forms.Form):
    course_id = forms.IntegerField(required=True)

    def enroll(self):
        print(self.cleaned_data)
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>
在另一个html文件中,当
enroll.html
中的
{{form}
标记没有解析任何内容,只是默默地失败时,该文件仅显示按钮,显示:

EDIT1:这是我试图包含表单的文件:

<h1>{{ course.title }}</h1>

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

<ul>
{# reverse lookup on codes with course foreignkey relationship #}
{% for code in course.code_set.all %}
  <li>{{ code.code }}</li>
{% endfor %}
</ul>

{% include "core/enroll.html" %}
{{course.title}
{%if error\u message%}{{{error\u message}{%endif%}
    {#具有course foreignkey关系的代码的反向查找#} {course.code_set.all%}
  • {{code.code}}
  • {%endfor%}
{%include“core/enroll.html”%}
所以事情是这样的。当您访问localhost:8000/core/enroll/django调用视图EnrollView,在该视图中定义表单内容并将其传递给上下文

一旦进入上下文,它的html页面,enroll.html,在本例中知道表单变量是什么

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

解决方案: 呈现相关html页面的视图(您希望看到表单,但无法看到表单)应在上下文中添加EnrollForm

context['form'] = EnrollForm()

类似于线上的东西。然后你就可以看到表单了。

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

一旦进入上下文,它的html页面,enroll.html,在本例中知道表单变量是什么

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

解决方案: 呈现相关html页面的视图(您希望看到表单,但无法看到表单)应在上下文中添加EnrollForm

context['form'] = EnrollForm()

类似于线上的东西。然后您应该能够看到表单。

模板的CCS是否支持嵌套模板?在页面上,尝试检查元素以查看存在哪些HTML对象。这些对象可能存在于页面范围(容器)之外,因此不可见。@t0bi我已经检查过了,但忘了将其添加到文章中。在令牌和提交按钮之间的页面上没有代码。奇怪。如果您发布更多正在使用的其他模板,这可能会有所帮助。使用代码@T0BID编辑模板的CCS是否支持嵌套模板?在页面上,尝试检查元素以查看存在哪些HTML对象。这些对象可能存在于页面范围(容器)之外,因此不可见。@t0bi我已经检查过了,但忘了将其添加到文章中。在令牌和提交按钮之间的页面上没有代码。奇怪。如果您发布更多正在使用的其他模板,这可能会有所帮助。使用代码@t0bit进行编辑这听起来不错,但不幸的是,当我创建上下文并添加“表单”条目时,错误仍然存在。有什么想法吗?新页面上有多个表单吗?没有,只有一个。这看起来不错,但不幸的是,当我创建上下文并添加“表单”条目时,错误仍然存在。有什么想法吗?新页面上有多个表单吗?没有,只有一个