Django 的表單處理:視圖獲取請求,執行所需的任何操做,包括從模型中讀取數據,而後生成並返回HTML頁面(從模板中),咱們傳遞一個包含要顯示的數據的上下文。使事情變得更復雜的是,服務器還須要可以處理用戶提供的數據,並在出現任何錯誤時,從新顯示頁面。服務器
下面顯示了 Django 如何處理表單請求的流程圖,從對包含表單的頁面的請求開始(以綠色顯示):
spa
基於上圖,Django 表單處理的主要內容是:blog
-
在用戶第一次請求時,顯示默認表單。get
- 表單可能包含空白字段(例如,若是您正在建立新記錄),或者可能預先填充了初始值(例如,若是您要更改記錄,或者具備有用的默認初始值)。
- 此時表單被稱爲未綁定,由於它與任何用戶輸入的數據無關(儘管它可能具備初始值)。
-
從提交請求接收數據,並將其綁定到表單。it
- 將數據綁定到表單,意味着當咱們須要從新顯示錶單時,用戶輸入的數據和任何錯誤均可取用。
-
清理並驗證數據。模板
- 清理數據會對輸入執行清理(例如,刪除可能用於向服務器發送惡意內容的無效字符)並將其轉換爲一致的 Python 類型。
- 驗證檢查值是否適合該字段(例如,在正確的日期範圍內,不是過短或太長等)
- 若是任何數據無效,請從新顯示錶單,此次使用任何用戶填充的值,和問題字段的錯誤消息。
- 若是全部數據都有效,請執行必要的操做(例如保存數據,發送表單和發送電子郵件,返回搜索結果,上傳文件等)
- 完成全部操做後,將用戶重定向到另外一個頁面。
本文首發於
BigYoung小站