如何从 django 中的表单错误属性中获取值
Posted
技术标签:
【中文标题】如何从 django 中的表单错误属性中获取值【英文标题】:How to fetch the value from form errors attribute in django 【发布时间】:2013-11-01 12:46:28 【问题描述】:我有 django 模板,我在其中将表单错误作为 html 写入属性 errors
form.html
% if form.errors %
<div class="span12">
form.errors
</div>
% endif %
上面模板代码的输出是这样的
html
<ul class="errorlist">
<li>price
<ul class="errorlist">
<li>price is required</li></ul>
</li>
<li>name
<ul class="errorlist">
<li>name is required</li>
</ul>
</li>
<li>description
<ul class="errorlist">
<li>description is required</li>
</ul>
</li>
设计
price
price is required
name
name is required
description
description is required
但我想以如下格式显示
% if form.errors %
<div class="span12">
% for error in form.errors %
key : value
% endfor %
</div>
% endif %
需要/需要的输出
price : price is required
name : name is required
description : description is required
谁能告诉我如何访问/使用form.errors
属性以便以上述格式打印/显示结果?
编辑
否则我们可以从如下视图发送错误字典
def render_view(request):
form = Form()
if form.is_valid():
.....
.....
render_to_response('template.html','errors':dict(form.errors))
在 template.html
中% if errors %
% for key in errors %
key : errors.key
% endfor %
% endif %
% endif %
但是在这种情况下,字典中键的值没有显示,那么如何访问它?
【问题讨论】:
我记得form.errors
是像对象一样的字典,所以你可以尝试迭代它。
【参考方案1】:
我记得 form.errors 是像对象一样的字典,所以你可以尝试迭代它。
% if errors %
% for key, error_list in errors.iteritems %
key : error_list
% endfor %
% endif %
如果你会这样迭代
% if errors %
% for key in errors %
key : errors
% endfor %
% endif %
您将遍历字典键,因此请考虑使用items
或iteritems
【讨论】:
【参考方案2】:不是很优雅,但可以试试这个:
% for field in form %
% if field.errors %
field.label : field.errors
% endif %
% endfor %
【讨论】:
以上是关于如何从 django 中的表单错误属性中获取值的主要内容,如果未能解决你的问题,请参考以下文章
已解决:如何在 Django 中的表单错误中重新显示带有选定值的表单集和 Select2 字段