我想要做的就是添加一个错误的字段在视图中,既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