如何为django modelform正确生成html

时间:2010-11-04 10:59:24

标签: django django-templates

我需要在django模板中将div组放在表单字段组中。 最简单的方法就是

MyForm()。as_table()

copypaste,并用适当的div包含一组字段。唯一的问题是,当表单验证中存在错误时,此方法会失败,因为 {{form.fieldname.errors}} 未在任何地方提及。

任何更好的想法或现成的工具都会让我每次都不能手工做这件事吗?

如果有人需要,可以回答

def generate_object_template(object):
    from string import Template
    for field in object._meta.fields:
            t = Template(""" <label>{{ form.$fieldname.label }}{% if form.$fieldname.is_required %}*{% endif %}</label>
             {{ form.$fieldname }}
             {% if form.$fieldname.errors %} {{ form.$fieldname.errors }}{% endif %}""").substitute(fieldname=field.attname)                                  
            print t

1 个答案:

答案 0 :(得分:1)

当您必须在Django中自定义表单时,您可以按照以下步骤进行操作

 ...
 <label>{{ form.myfield.label }}{% if form.myfield.is_required %}*{% endif %}</label>
 {{ form.myfield }}
 {% if form.myfield.errors %} {{ form.myfield.errors }}{% endif %}

<label>{{ form.myfield3.label }}{% if form.myfield3.is_required %}*{% endif %}</label>
 {{ form.myfield3 }}
 {% if form.myfield3.errors %} {{ form.myfield3.errors }}{% endif %}

 <label>{{ form.myfield2.label }}{% if form.myfield2.is_required %}*{% endif %}</label>
 {{ form.myfield2 }}
 {% if form.myfield2.errors %} {{ form.myfield2.errors }}{% endif %}
...

通过这种设置,您可以自定义表格,在您想要的地方添加div,并且仍然可以进行验证。

请参阅http://docs.djangoproject.com/en/dev/topics/forms/#customizing-the-form-template