我想要做的就是添加一個錯誤的字段在視圖中,既form.is_valid()
和form.save()
後,它似乎工作,但只是一個黑客,因爲,我希望這裏有人能解釋爲什麼它作品。在視圖中添加一個Django窗體的錯誤...破解?
所以在我的窗體的save()
功能,我連接到LDAP服務器,並嘗試在形式提供的用戶名和密碼進行身份驗證。如果一切正常,最終發生的是User
對象,並創建一個Profile
對象。但是,在用於連接LDAP並從中獲取數據的代碼中,可能會發生錯誤,例如憑據錯誤或無法綁定到服務器。在這種情況下,我返回None
,然後我的觀點通過向表單添加錯誤來處理它。下面是該視圖中的相關代碼:
if form.is_valid():
profile = form.save()
if profile is None:
# there was an LDAP error
msg = u"An error ocurred trying to authenticate over LDAP. Try again."
form = form_class(request.POST)
print form
form._errors['user_name'] = ErrorList([msg])
return render_to_response(template_name, locals())
現在,註釋掉打印語句,我得到了'NoneType' object does not support item assignment
當我嘗試錯誤添加到窗體。如果我取消打印聲明的註釋,它就像我期望的那樣工作。任何想法爲什麼?無論如何,我可以做到這一點,而沒有在那裏的打印聲明?謝謝!
PS:我不想做表單驗證的清潔方法,因爲我不希望有綁定到LDAP服務器,並嘗試兩次驗證用戶身份,我只是希望它一旦發生,且無論是工作還是沒有。
好問題..它晚了,我累了,整天我一直在此。這是我最好的答案:P 但是,謝謝,這效果更好。 – hora 2010-07-23 04:28:18