如何解决Django将表单错误输出为{{form.as_table}}中的表行
|| 我真的发现表单输出快捷方式(例如as_table
)非常方便。但是,在使用这些方法时显示错误对我来说似乎有点违反直觉。当我使用“ 0”格式时,我希望根据表格式显示特定于字段的错误。我可以手动将表单拼凑成这样:
<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>
但是我想知道的是,是否有更简单的方法来做到这一点?也许我在文档中错过了一些东西?还是你们采用的其他方法?
解决方法
How errors are displayed
和自定义错误列表格式显示默认错误字段输出是什么以及如何自定义它。
我最近在我的项目中一直使用ѭ4,对我来说效果很好。
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>
template.html:
<form>
{% include \'table_form.html\' %}
</form>
多种形式也可以使用,例如包含form1和form2的上下文视图:
template.html:
<form>
{% include \'table_form.html with form=form1 %}
</form>
<form>
{% include \'table_form.html with form=form2 %}
</form>
编辑:
这是BaseForm类中定义的as_table
方法:
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)
在表单中覆盖此方法将允许您在使用{{form.as_table}}时更改呈现方式
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。