0

我有一个关于 django-registration ( https://bitbucket.org/ubernostrum/django-registration ) 的问题,但我找不到他们的问题跟踪器或邮件列表,所以我会在这里试试运气。

我的应用程序通过 OpenID 和登录名/密码启用登录。

一些用户在 FS 上“忘记密码”尝试重置它(此处),但随后他们收到消息:

与此电子邮件地址关联的用户帐户无法重置密码。

没有进一步的解释。(您可以尝试重置我的密码 - 只需在此处输入我的电子邮件(位于 gmail dot com 的 tonylampada)即可查看错误消息。

我想自定义该消息。更好的信息是:

与此电子邮件地址关联的用户帐户无法重置密码。发生这种情况是因为用户帐户是使用 OpenID 或 OAuth 提供程序(通常是 Google、Facebook、MyOpenID 等)创建的。要查看与此帐户关联的登录提供程序,请查看用户配置文件

告诉 django-registration 的最简单方法是什么?

谢谢!

PS:Github 上的这个问题:https ://github.com/freedomsponsors/www.freedomsponsors.org/issues/191 (以防你今天想提出拉取请求:-))

4

1 回答 1

2

django-registration 使用来自django.contrib.auth.

在这种情况下:reset_password() github

由于这不是基于类的视图,因此您无法覆盖/继承它,但您可以从 django.contrib.auth.forms 传入 PasswordResetForm

from django.contrib.auth.forms import PasswordResetForm

class CustomResetForm(PasswordResetForm):

       def validate(self, value):
            #pseudocode
            if user.cant_reset_pw:
               raise ValidationError("The user account associated with this e-mail address cannot reset the password. and so forth..")

            super(CustomResetForm, self).validate(value)

您必须通过覆盖 urlr'^password/change/$'以指向django.contrib.auth.passwort_reset()使用您的CustomResetForm.

于 2013-09-06T06:56:27.947 回答