2011-04-22 54 views
0

我需要在表單頂部添加一些簡單的info/html,但我無法在模板中添加該文本。我有一段代碼看起來像:在django中添加一些信息到表單,而不是使用模板?

from django import forms 

class ContactForm1(forms.Form): 
    subject = forms.CharField(max_length=100) 
    sender = forms.EmailField() 

但是,當我發送此表單模板,我想在窗體頂部呈現一些純HTML,表單字段之前。我無法在模板中添加信息的原因是,表單與請求動態相關,然後傳遞給模板,我發現的最簡潔的方式是將額外的信息添加到表單本身。類似這樣的:

class ContactForm1(forms.Form): 
    info = InfoField("""<h1>This is the header</h1> 
         and then some more html""") 
    subject = forms.CharField(max_length=100) 
    sender = forms.EmailField() 

而信息字段中的html會在其他字段之前呈現。我只是無法包裝我的頭如何subclass django.forms.Field並呈現我自己的HTML。

有什麼想法?

+1

我不清楚爲什麼你不能在模板中渲染它。 「{%if form%} ...有些html ... {%for field in form.fields%} ... fields ... {%endfor%} {%endif%}'不適合你? – 2011-04-22 02:24:42

回答

1

正如Torsten所說,使用模板是最好的選擇。

如果你不想使用它,你可能想看看創建自定義部件

http://docs.djangoproject.com/en/dev/ref/forms/fields/#creating-custom-fields

現在已經寫了很多定製的部件,所以你可以很容易地找到源代碼和研究如何去做。

+0

爲什麼不向模板發送另一個參數,如info?這將比創建自定義小部件更容易 – Myth 2011-04-22 16:23:43

相關問題