【转载】Django form在模版中的渲染方式
原文链接:https://www.cnblogs.com/solozorro/p/6165214.html
form在模版中的渲染方式
一、form.as_p
渲染表单为一系列的p标签,每个p标签包含一个字段:
<p>
<label for="id_subject">Subject:</label>
<input id="id_subject" type="text" name="subject" maxlength="100" />
</p>
二、form.as_ul
渲染表单为一系列的li标签,每个li 标签包含一个字段,它不包含ul标签:
<li>
<label for="id_subject">Subject:</label>
<input id="id_subject" type="text" name="subject" maxlength="100" />
</li>
三、form.as_table
输出表单为一个HTML的table:
<tr>
<th>
<label for="id_subject">Subject:</label>
</th>
<td>
<input id="id_subject" type="text" name="subject" maxlength="100" />
</td>
</tr>
四、for field in form
通过迭代form,获取其中的所有field。field可引用的包括{{ field.label_tag }}
, {{ field }}
, {{ field.errors }}
:
{% for field in form %}
<div class="form-group">
{{ field.label_tag }}
<div class="">
{{ field }}
</div>
{{ field.errors }}
</div>
{% endfor %}
- field.label_tag
{{ field.label_tag }}
输出为field的label元素:<label for="id_message">Message:</label>
- field
{{ field }}
输出为field的input<input type="text" name="message" id="id_message" />
- field.errors
{{ field.errors }}
field的errors元素(errors一般在form验证出错的时候显示)['This field is required.']
五、form.fieldname
直接将form作为一个dict,引用其每一个field,比如 {{ form.title }}
引用form中的title这个field:
<div class="form-group">
<label class="control-label">
{{ form.title.label_tag }}
</label>
<div class="">
{{ form.title }}
</div>
{{ form.title.errors }}
</div>
这种方式一般用于form需要更加精准的样式的时候,逐个元素逐个元素的编排到html中。