1. 渲染表单
1.1. 自动渲染
模板变量 | 描述 |
---|---|
{{ form }} |
渲染默认表单 |
{{ form.as_table }} |
将表单渲染进 <table> (一个输入框一个 <tr> ) |
{{ form.as_p }} |
将表单渲染进 <p> |
{{ form.as_ul }} |
将表单渲染进 <ul> (一个输入框一个 <li> ) |
1.2. 手动渲染
{{ form.FieldName }}
获取单独字段
每个字段都属性,比如下面的 errors,id_for_label
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.first_name.errors }}
<label for="{{ form.first_name.id_for_label }}">First Name:</label>
{{ form.first_name }}
</div>
1.3. 循环生成字段
1.3.1. 所有字段
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}
1.3.2. 只可见字段
{% for field in form.visible_fields %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
</div>
{% endfor %}
1.3.3. 只不可见字段
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
2. 重用表单示例
比如可以反复使用评论表单 Comment Form
<!-- file_form.html -->
{% include "form_snippet.html" with form=comment_form %}
可复用的表单模板:
<!-- form_snippet.html -->
{% for field in comment_form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
</div>
{% endfor %}