如何从 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 %

您将遍历字典键,因此请考虑使用itemsiteritems

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何从 django 中的表单错误属性中获取值的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Django 表单中删除必需的属性

如何从 django 中的用户模型中获取 id

已解决:如何在 Django 中的表单错误中重新显示带有选定值的表单集和 Select2 字段

Django 错误的 request.POST 属性值已保存

Django 表单中的 CSRF 令牌丢失或不正确

JavaScript错误:SCRIPT5007:无法获取属性'getElementsByTagName'