2011-04-22 62 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

相关问题