cha*_*sie 5 django django-templates django-forms
我真的找到了表格输出快捷方式,比如as_table非常方便.但是,在使用这些方法时显示错误似乎与我有点违反直觉.当我使用该as_table格式时,我希望根据表格格式显示我的字段特定错误.我可以手动拼凑我的表格,如下所示:
<table>
{% for error in form.non_field_errors %}
<tr><td>{{ error }}</td></tr>
{% endfor %}
{% endif %}
{% if form.username.errors %}
{% for error in form.username.errors %}
<tr><td>{{ error }}</td></tr>
{% endfor %}
{% endif %}
<tr><th><label for="id_username">Name:</label></th><td>{{ form.username }}</td></td>
{% if form.password.errors %}
{% for error in form.password.errors %}
<tr><td>{{ error }}</td></tr>
{% endfor %}
{% endif %}
<tr><th><label for="id_password">Password:</label>/th><td>{{ form.password }}</td></td>
Run Code Online (Sandbox Code Playgroud)
但我想知道的是,如果有更简单的方法吗?也许我在文档中遗漏了一些东西?或许你们中的任何一种方法都采用不同的方法
DTi*_*ing 10
How errors are displayed并自定义错误列表格式显示默认错误字段输出是什么以及如何自定义它.
我reusable template最近在我的项目中使用了一个,对我来说一直很好.
table_form.html:
<table>
{% for error in form.non_field_errors %}
<tr><td>{{ error }}</td></tr>
{% endfor %}
{% for field in form %}
{% for error in form.username.errors %}
<tr><td>{{ error }}</td></tr>
{% endfor %}
<tr><th>{{ field.label_tag }}:</th><td>{{ field }}</td></td>
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)
template.html:
<form>
{% include 'table_form.html' %}
</form>
Run Code Online (Sandbox Code Playgroud)
多个表单也可以工作,例如使用包含form1和form2的上下文查看:
template.html:
<form>
{% include 'table_form.html with form=form1 %}
</form>
<form>
{% include 'table_form.html with form=form2 %}
</form>
Run Code Online (Sandbox Code Playgroud)
编辑:
这是as_tableBaseForm类中定义的方法:
210 def as_table(self):
211 "Returns this form rendered as HTML <tr>s -- excluding the <table></table>."
212 return self._html_output(
213 normal_row = u'<tr%(html_class_attr)s><th>%(label)s</th><td>%(errors)s%(field)s%(help_text)s</td></tr>',
214 error_row = u'<tr><td colspan="2">%s</td></tr>',
215 row_ender = u'</td></tr>',
216 help_text_html = u'<br /><span class="helptext">%s</span>',
217 errors_on_separate_row = False)
Run Code Online (Sandbox Code Playgroud)
在表单中覆盖此方法将允许您在使用{{form.as_table}}时更改呈现
| 归档时间: |
|
| 查看次数: |
4351 次 |
| 最近记录: |