我正在使用django註冊和獲取Django的表單框架的介紹。我一直使用.to_p()
方法來顯示錶單,但我需要一種更好的方式來呈現表單數據,所以我正在閱讀表單框架。Django的表單框架是否使用Django消息框架?
表單框架傳遞的錯誤是否傳遞給Django's messages framework?
我正在使用django註冊和獲取Django的表單框架的介紹。我一直使用.to_p()
方法來顯示錶單,但我需要一種更好的方式來呈現表單數據,所以我正在閱讀表單框架。Django的表單框架是否使用Django消息框架?
表單框架傳遞的錯誤是否傳遞給Django's messages framework?
不,它們是完全獨立的 - 因爲他們應該的,因爲消息是django.contrib
,因此不能保證啓用。
與as_p
方法一樣,顯示錯誤的最佳方式是在表單本身內。我使用模板標籤一次性顯示每個字段及其相關的錯誤 - 這是Peter Baumgartner的display_field tag的修改版本。
不,不會自動。你將不得不自己處理。
if not form.is_valid():
# loop through form.errors and
# convert that in messages.error
# where appropriate
一種形式的每個字段中存儲有一本字典它自己的錯誤消息。所以
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'])
引用格式Steve Mconell:通常情況下,您不希望用戶在生產代碼中看到斷言消息;斷言主要用於開發和維護期間。斷言通常在開發時編譯到代碼中,並編譯出生產代碼。 – radtek 2015-04-15 20:01:06
一種痛苦,因爲Django註冊已經是一個'應用程序',所以我不能真正修改它。關於如何將錯誤添加到消息框架的任何建議? – dotty 2011-05-03 09:11:35