2009-09-02 20 views
11

如果我期待在Django的forms.pyas_p()電話_html_output(),非現場錯誤,這些錯誤的風格領域的錯誤與self.error_class()(雖然我無法找到的該定義)。造型Django的表單上的

但是,_html_output()不具有樣式non_field_errors(也稱爲代碼中的top_errors)。

一個風格的非現場錯誤如何?剪切並粘貼所有_html_output?

我正在使用Django 1.0。

回答

10

在您的模板中,您可以訪問{{form.non_field_errors}}並渲染它們,只要你喜歡。下面是Django管理如何處理他們,例如:http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/templates/admin/change_form.html#L40

+0

感謝。很難用模板語言重新創建所有的表單渲染代碼,但也許這是正確的。你知道一個與as_p完全相同的模板嗎? http://docs.djangoproject.com/en/dev/topics/forms/#looping-over-hidden-and-visible-fields很接近,但可能不一樣。 – dfrankow 2009-09-08 22:47:55

4

選項:

兩個{{ form.non_field_errors }}{{ form.non_field_errors.as_ul }}做同樣的事情。

{{ form.non_field_errors.as_text }}在文本前面顯示*的錯誤。

本文也解釋了爲什麼*不會被刪除django ticket

11

我用這個模板風格非字段的錯誤有所幫助:

{% if form.non_field_errors %} 
    <div class="non-field-errors"> 
    {% for err in form.non_field_errors %} 
     <p class="form-error">{{ err }}</p> 
    {% endfor %} 
    </div> 
{% endif %}