2014-10-11 16 views
-3

以此示例表單。在Django中,爲什麼我的表單上下文變量消失?

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': , ... }。換句話說,表單消失了。我懷疑它與初始化後添加字段有關,但我真的很想知道爲什麼如果可能的話,如何解決看似的限制。

+0

如果您沒有向我們展示視圖,那麼我們所能做的就是猜測問題可能是什麼。你爲什麼認爲'__init__'方法是問題?如果刪除它,表單會顯示嗎? – Alasdair 2014-10-11 06:53:53

+0

你能添加更多的視圖代碼嗎?你如何將上下文發送到模板? – 2014-10-11 07:09:26

回答

0

要測試您的形式已經消失,你可以嘗試顯示它:

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

本應顯示形式HTML的每個字段。希望能幫助到你!

+0

這不起作用,因爲test_form甚至不存在於上下文中,就像我在我的問題中所說的那樣。 – 2014-10-11 05:52:21

0

你的聯繫變量並沒有消失:它就在那裏,在你向我們展示的輸出中。如果它已經消失,那麼在該字典中將看不到test_form密鑰。

至於爲什麼你沒有看到該鍵的值,那只是因爲python對象的默認表示就像這個<TestForm object at ....>,並且瀏覽器正在將尖括號解釋爲它忽略的未知HTML標記。

將您的調試標籤放在<pre>...</pre>標籤內,您會發現它很好。

+0

我懷疑這是因爲我有另一種顯示得很好的窗體,並且在調試中出現:'form_info':.ProfileEditForm object at 0x0000000003DCA160>'。 – 2014-10-11 13:58:21

+0

更新:剛剛嘗試了你的建議,但它仍然不存在。正如我在上面所顯示的那樣。我確定調試標籤是自動轉義的。 – 2014-10-11 14:03:53

相關問題