回答
Django表單只能引發ValidationErrors(請參閱here)。解決這個問題的一種方法是使用new messaging system。定義了5個級別的消息,並具有定義其他自定義消息級別的功能。
至於抑制錯誤/警告,你總是可以忽略在你的模板form.errors
。還要看看錶格模塊中的clean
方法 - 您應該能夠抑制那裏的一些警告。
老問題,但我認爲它仍然相關。
這真的取決於你認爲是一個警告。
- 您可能會接受表單中的部分有效數據(不會在需要警告的字段上引發ValidationError)。然後,使用
contrib.messages
框架(或類似框架),您可以在下一頁上顯示警告框(可以是相同的表單頁面,也可以是重定向到主頁或任何其他頁面) 或者,您可能需要確認的警告。您可以在創建時動態地添加或更改字段,那麼爲什麼不添加隱藏的「我接受風險」複選框,只有當您的表單引發該警告時才需要?
- 用戶加載表單。複選框是一個隱藏的HTML輸入設置爲false。
- 用戶使用引發警告的數據填充表單。窗體再次顯示,但現在該複選框可見。
- 用戶複選框然後重新提交他們的表單。
- 服務器正確處理數據並忽略警告。
第二個選項不要求餅乾的優勢,而且還增加了交互性(用戶可能不想繼續,因爲該警告的...)。
在代碼中,你必須做的是這樣的:
#views.py
...
if form.is_valid():
# proceed
else:
form.fields["my_checkbox"].widget = widgets.CheckboxInput
# re-display form
...
#forms.py
...
def clean_myfield(self):
# do your cleaning
if (myfield_warning==True) and not (my_checkbox==True):
raise ValidationError("blabla")
else:
return myfield
在你看來,如果需要,您可以在form.errors查看相應的錯誤。
偉大的答案!我會建議覆蓋'clean'方法而不是'clean_myfield'方法來評估複選框是否使用'cleaned_data'進行檢查。 – Nagasaki45 2014-05-20 11:13:33
它也可以工作,但如果我記得,當您在'clean_
您仍然可以通過執行'self.add_error('my_field',message)在'clean'內的特定字段添加錯誤' – user857159 2017-08-15 14:51:36
- 1. 檢票信息,警告,錯誤信息
- 2. PHP錯誤警告消息
- 3. 如何使用requiredMessage屬性獲取警告消息而不是錯誤消息?
- 4. 只顯示錯誤和信息,而不是警告
- 5. Spring Framework - 顯示警告消息而不是錯誤
- 6. Django形式警告消息
- 7. 無法提示javaFX中的信息消息或警告消息/
- 8. 無法關閉信息/警告消息
- 9. 警告:array_combine()的錯誤信息
- 10. SSDT OPENJSON錯誤的警告消息
- 11. git push上的錯誤/警告消息
- 12. 警告消息
- 13. 要在Java腳本顯示錯誤消息而不警告框
- 14. WPF,處理錯誤和警告消息
- 15. WPF,處理錯誤和警告消息
- 16. 區分Oracle錯誤和警告消息
- 17. 禁用MagicalRecord錯誤消息和警告
- 18. 沒有得到錯誤信息,甚至有在MongoDB中
- 19. jQuery警告'未定義'的錯誤,而不是Java/Spring異常詳細信息
- 20. Renjin中的警告消息
- 21. 不顯示警告消息
- 22. 警告:頭信息
- 23. glmmLasso警告信息
- 24. Django錯誤消息
- 25. R2WinBUGS - 警告消息
- 26. RVM警告消息
- 27. XAMPP警告消息
- 28. ADBannerView警告消息
- 29. file_put_contents - 警告消息
- 30. PHP警告消息
現在的問題是四歲,仍然沒有好的解決方案發布。沒有解決?消息框架不起作用,因爲您希望看到輸入字段旁邊的警告。 – guettli 2014-08-13 07:50:30