如何从django中的表单错误属性中获取值

时间:2013-10-23 09:50:03

标签: python django forms django-templates django-errors

我有django模板,其中我将表单错误输入属性errors作为html

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%}

但是在这种情况下,字典中的键的值没有显示,那么如何访问它?

2 个答案:

答案 0 :(得分:0)

因为我记得form.errors就像对象一样dict所以你可以尝试迭代它。

{% if errors %}
   {% for key, error_list in errors.iteritems %} 
       {{key}} : {{error_list}}
   {% endfor %} 
{% endif %}

如果你会这样迭代

{% if errors %}
   {% for key in errors %} 
       {{key}} : {{errors}}
   {% endfor %} 
{% endif %}

您将迭代字典键,因此请考虑使用itemsiteritems

答案 1 :(得分:-1)

不是很优雅,但可以试试这个:

{% for field in form %}
    {% if field.errors %}
        {{field.label}} : {{field.errors}}
    {% endif %}
{% endfor %}