2013-05-22 13 views
6

Şablonuma formun hatalarını html olmayan sürümde almak istiyorum.django form hataları. Herhangi bir html etiketi olmadan hatayı al

varsayılan olarak hata, önlemek istediğim <ul class="errorlist"> tarafından doludur.

Her halükarda büyük bir kod değişikliği olmadan bunu yapmak için?

{% if form.subject.errors %} 
    <ol> 
    {% for error in form.subject.errors %} 
     <li><strong>{{ error|escape }}</strong></li> 
    {% endfor %} 
    </ol> 
{% endif %} 

şablonda da form sınıfı adı her neyse ile form değiştirin: formlar dokümantasyon bölümünde

cevap

6

This section tüm ayrıntıları, yani bu pasajı vardır. Bu örnekte, subject formdaki bir alandır. Tüm hataları, tarlalar aracılığıyla basitçe döngü özetlemek için ayrı bir bölüm olmasını istiyorsanız:

{% if form.errors %} 
    {% for field in form %} 
     {% for error in field.errors %} 
      {{ error|escape }} 
     {% endfor %} 
    {% endfor %} 
{% endif %} 
+1

Kodda bir yazım hatası var. {% if form.error%}} -> {% if form.errors%} – aabele

12

bu sorunu çözmek için de yararlı olacaktır Django 1.7 iki yeni yöntem vardır:

Form.errors.as_data()

>>> f.errors.as_data() 
{'sender': [ValidationError(['Enter a valid email address.'])], 
'subject': [ValidationError(['This field is required.'])]} 

Form.errors.as_json()

>>> f.errors.as_json() 
{"sender": [{"message": "Enter a valid email address.", "code": "invalid"}], 
"subject": [{"message": "This field is required.", "code": "required"}]} 
1

Belirli bir alandaki hatalara erişmek için, form.field_name.errors kullanın, burada "field_name", hatayı oluşturan alanın adıdır.

Alanda birden fazla hata oluşması durumunda for döngüsünü kullanmak hâlâ iyidir.

Ham örnek: Bazı hatalar özellikle belli bir alana alakalı olmayabilir

{% for error in form.email.errors %} 
    <label>{{ error|escape }} </label> 
{% endfor %} 
<br> 
<label>Email: </label>{{ form.email }} 

, örneğin, iki şifre alanları eşleşmediğinde yükseltilir bir hata için. Erişim için

{{ form.non_field_errors }}