亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python django 通過裝飾器或額外函數驗證用戶輸入?還有什么更Pythonic的嗎?

python django 通過裝飾器或額外函數驗證用戶輸入?還有什么更Pythonic的嗎?

暮色呼如 2024-01-15 17:16:32
我正在開發一個網絡應用程序。用戶可以設置一些參數來運行一些算法。因此,當我在后端提取參數時,我想在啟動算法之前驗證它們,這可能會在長時間執行后崩潰。我應該在算法函數周圍使用裝飾器,還是應該將參數傳遞給像 def validate_parameters() 這樣的函數,如果參數不正確,它會引發錯誤?
查看完整描述

1 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

Python 的“請求寬恕而不是許可”的經驗法則是為了保持代碼的簡潔和易于理解。檢查代碼流程可以告訴您預期的路徑是什么,并且很明顯什么是異常條件。在這種情況下,不檢查輸入有兩個缺點,并且您可以將所有檢查隱藏在函數中,以便代碼干凈。我想說這里的 pythonic 代碼是這樣的

????if?not?valididate_parameters(params):?
???????????raise?ValidationException(get_validation_error_msg(params))

這里你的validate_parameters函數只是做檢查。該get_validation_error_msg函數負責生成可以呈現給用戶的內容的繁重工作。例如,它可以檢查驗證函數在出現任何錯誤時盡早退出的所有參數。請注意,您必須將 Exception 定義ValidationException為 Exception 的子類并在更高級別捕獲它。

除了一般編程的想法之外,在 Django 中,如果您的參數來自用戶填寫的表單,您應該驗證表單代碼中的每個字段。


查看完整回答
反對 回復 2024-01-15
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號