2011-05-03 111 views

回答

4

不,它們是完全獨立的 - 因爲他們應該的,因爲消息是django.contrib,因此不能保證啓用。

as_p方法一樣,顯示錯誤的最佳方式是在表單本身內。我使用模板標籤一次性顯示每個字段及其相關的錯誤 - 這是Peter Baumgartner的display_field tag的修改版本。

0

不,不會自動。你將不得不自己處理。

if not form.is_valid(): 
    # loop through form.errors and 
    # convert that in messages.error 
    # where appropriate 
+0

一種痛苦,因爲Django註冊已經是一個'應用程序',所以我不能真正修改它。關於如何將錯誤添加到消息框架的任何建議? – dotty 2011-05-03 09:11:35

2

一種形式的每個字段中存儲有一本字典它自己的錯誤消息。所以

class MyForm(Form): 
    myfield = CharField() 
    nullfield = CharField(blank=True) 

您的驗證步驟後,如果檢測到有某種形式的錯誤,他們都儲存在錯誤的字典, ,

form = MyForm(request.GET) 
if form.is_valid(): 
    ... 
else: 
    # assert form errors 
    assert 0, form.errors 

形式錯誤的字典會像

{'myfield': [u'This field is required.']} 

所以,每個錯誤將被添加到錯誤字典中。 您可以檢查該字典並創建單個錯誤消息,或者您想要在您的視圖中執行的任何操作。或在模板你可以

{%for err in form.errors%} 
    ........ 
{%endfor %} 

答遍歷它們正如你看到的,沒有什麼關於Django的消息應用程序......如果你真的想傳遞的錯誤信息Django的消息應用程序,您可以嘗試

for error in form.errors: 
    request.user.message_set.create(message=form.errors['error']) 
+0

引用格式Steve Mconell:通常情況下,您不希望用戶在生產代碼中看到斷言消息;斷言主要用於開發和維護期間。斷言通常在開發時編譯到代碼中,並編譯出生產代碼。 – radtek 2015-04-15 20:01:06