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