我有一个Web应用程序Django 1.4.3。我们允许用户以节目形式预订节目;这些用户是使用电子邮件和不可用的密码创建的(使用set_unusable_password())。现在,我们希望允许他们重置密码。但是,Django的内置重置形式不允许重置用户的密码不可用。我是否必须创建自己的表单?有哪些替代方案?或者我应该使用make_random_password吗?
auth项目的相关代码 -
if any((user.password == UNUSABLE_PASSWORD)
for user in self.users_cache):
raise forms.ValidationError(self.error_messages['unusable'])
感谢
答案 0 :(得分:4)
如果当前密码不可用,默认PasswordResetForm
不允许用户重置密码。但是,您可以对表单进行子类化并覆盖执行此检查的方法。
对于Django 1.8+,覆盖get_users
方法。
在您的情况下,对于Django 1.4,请覆盖clean_email
方法。
然后将您的自定义表单包含在password_reset
网址格式中,作为kwarg password_reset_form
。