如何在 Django-AllAuth 中自定义 ResetPasswordForm

How do I customize the ResetPasswordForm in Django-AllAuth

我 运行 遇到了几个问题。首先,从 configuration section of the docs...

ACCOUNT_FORMS (={})
Used to override forms, for example: {‘login’: ‘myapp.forms.LoginForm’}

我怎么知道要在这里放什么?我知道它需要像 'password_reset_form':'myapp.forms.MyPasswordResetForm' 这样的(键,值)对,但我怎么知道要使用正确的键?

其次,在我的 forms.py 中,我尝试将 ResetPasswordForm 扩展为

from allauth.account.forms import ResetPasswordForm

class MyResetPasswordForm(ResetPasswordForm):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # Override the email widget
        self.fields['email'].widget = forms.TextInput(attrs={'class':'form-control', 'type':'email', 'required':'required', 'placeholder':'Email'})

但这一直给我错误 Error importing form class accounts.forms: "cannot import name 'ResetPasswordForm'"

如有任何建议或指导,我们将不胜感激。

我还记得 运行 第一个问题,很惊讶我在文档中找不到它!我最终不得不通过 source code 并且您需要输入的键值位于 get_form_class 函数的 views.py 文件中。

关于你的第二个问题,乍一看我不确定导入失败的原因 - 它适用于我。

您使用的是哪个版本的 all-auth?

以下是您可以自定义的所有表单:

ACCOUNT_FORMS = {
    'login': 'allauth.account.forms.LoginForm',
    'signup': 'allauth.account.forms.SignupForm',
    'add_email': 'allauth.account.forms.AddEmailForm',
    'change_password': 'allauth.account.forms.ChangePasswordForm',
    'set_password': 'allauth.account.forms.SetPasswordForm',
    'reset_password': 'allauth.account.forms.ResetPasswordForm',
    'reset_password_from_key': 
    'allauth.account.forms.ResetPasswordKeyForm',
    'disconnect': 'allauth.socialaccount.forms.DisconnectForm',
}

另外,您可以查看 docs 自己看看。