2014-09-26 19 views
0

我有一個用戶輸入密碼的Django表單。我無法在本地驗證密碼;我調用外部API來設置密碼,如果出現問題,它會返回一條錯誤消息(即密碼太短,包含字典字等)Django表單驗證需要外部資源

API還需要用戶的登錄名,而不是該形式的元素,但在視圖中是已知的。

那麼,哪裏是做表格驗證的最佳地點?在窗體的clean()方法中,或在視圖代碼中?

如果我使用clean()方法,如何傳入用戶的登錄名?

謝謝。

回答

1

此驗證與表單有關,我認爲您應該將此驗證放在表單中。 您可以添加用戶名以形成數據並將其傳遞給表單。 例如,如果用戶名會出錯,您可以提出ValidationError。 和其他消息password short等似乎是驗證錯誤,所以應該在形式。

例如,您將request.POST傳遞給表單。 你可以做這樣的事情:

data = request.POST.dict() 
data['username'] = 'myusername' 
form = Form(data) 

什麼是添加的用戶名的形式字段,如果你總是需要它的問題呢?

+0

用戶名輸入在以前的表單;如果用戶不得不再次輸入它,這將會令人困惑並且可能不明確。 – 2014-09-26 15:24:44

+0

當然,但沒有必要向用戶顯示此字段:) Django表單不僅僅是用戶可以看到的,它是數據驗證的強大工具。 – coldmind 2014-09-26 15:27:18