0

私はerrorshtmlとして属性にフォームエラーを取得しているdjangoテンプレートを持っています

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

しかし、この場合、辞書のキーの値が表示されていないので、どのようにアクセスするのですか?

4

2 に答える 2

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

辞書キーを反復処理するため、またはのいずれitemsかを使用することを検討してくださいiteritems

于 2013-10-23T10:25:00.037 に答える
-1

あまりエレガントではありませんが、これを試すことができます:

{% for field in form %}
    {% if field.errors %}
        {{field.label}} : {{field.errors}}
    {% endif %}
{% endfor %}
于 2013-10-23T10:08:11.860 に答える