在Django中,为什么我的表单上下文变量会消失?

时间:2014-10-11 04:49:05

标签: django django-forms

以此示例形式。

class TestForm(forms.Form):

    def __init__(self, *args, **kwargs):
        super(TestForm, self).__init__(*args, **kwargs)

        self.fields["test"] = forms.CharField()

在我看来,我有这段代码:

test_form = TestForm()
context['test_form'] = test_form

如果我print(test_form),它会显得很好。现在,当我在模板中使用{% debug %}时,这就是输出:{ ... 'test_form': , ... }。换句话说,表格消失了。我怀疑它与初始化后添加字段有关,但我真的想知道为什么?如果可能的话,如何绕过看似限制。

2 个答案:

答案 0 :(得分:0)

要测试您的表单是否已消失,您可以尝试显示它:

{% for field in test_form %}
    {{ field }}
{% endfor %}

这应该将表单的每个字段显示为HTML。希望它有所帮助!

答案 1 :(得分:0)

您的联系人变量没有消失:它就在那里,在您向我们展示的输出中。如果它已经消失,你就不会在该词典中看到test_form键。

至于为什么你没有看到该键的值,这只是因为python对象的默认表示就像这个<TestForm object at ....>,而你的浏览器正在解释尖括号作为一个它忽略的未知HTML标签。

将调试标记放在<pre>...</pre>标记内,您就可以看到它。