如何在 Django 專案中新增驗證?


驗證是計算機自動檢查以確保輸入資料合理且有意義的過程。它不判斷輸入資料是否準確。我們許多人都熟悉電子郵件或電話驗證,這通常是大多數網站的一部分。當我們以錯誤的格式輸入電子郵件地址或輸入的電話號碼不包含 10 位數字時,通常會顯示警告提示,要求以可接受的格式輸入資料。這就是驗證。大多數開發者會在他們的專案中新增驗證,以確保他們以期望的格式接收來自使用者的資料。

Django 中的驗證

Django 專案中的驗證可以在表單和欄位上進行。表單驗證發生在資料清理時。如果您想自定義此過程,則需要更改多個區域。通常,這些地方中的每一個都具有不同的用途。

驗證在資料清理時進行。在表單處理過程中,Django 中的清理有三種方式。通常,這些會在對錶單上的 is_valid() 方法呼叫後執行。其他一些操作也可以觸發清理和驗證,例如呼叫 full_clean() 方法。

驗證由驗證器執行;這些是可以重複使用的輔助工具。驗證器是接受單個引數並在無效輸入時引發 ValidationError 的函式。在呼叫欄位的 to_python 和 validate 方法後,將執行驗證器。

在 Django 中驗證表單的過程分為幾個步驟。這些步驟如下所示。

  • 欄位上的 **to_python** 方法是每個驗證的第一步。它確保輸入的資料屬於正確的型別,否則會引發 **ValidationError**。此方法接受使用者輸入的資料,將其轉換為 Python 等效的資料型別,或者如果無法轉換則引發錯誤。

    **例如:**如果在此欄位中輸入的資料無法轉換為 Python 浮點數,則 **FloatField** 將引發 **ValidationError**。

  • **validate()** 方法處理欄位上不適合驗證器的特定驗證。它只處理特定於欄位的錯誤。它接受使用者提供的值,將其轉換為正確的資料型別,並在出現任何異常行為時引發 ValidationError。

  • **run_validators()** 方法執行應用於特定欄位的所有驗證器,並將所有生成的錯誤合併到單個 ValidationError 中。

  • 如前所述,驗證器在資料清理時執行。因此,clean() 方法確保在需要時以正確的順序執行 **to_python()、validate()** 和 **run_validators()**,並在需要時引發錯誤。

  • 例如,要驗證名為 idnumber 的 CharField 的內容(該欄位唯一標識一行),clean_idnumber() 將是指定清理過程的方法。此方法的返回值將替換清理資料的現有值。

更新於:2022年9月2日

444 次檢視

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.