Django Allauth在注册页面中询问密码3次

Django Allauth在注册页面中询问密码3次,django,django-forms,django-allauth,Django,Django Forms,Django Allauth,我正在尝试用django allauth实现一个注册表单,一切都正常工作。然而,我已经实现了一个CustomUserCreationForm,它显示了下面列出的字段,从那时起,它已经三次询问密码了。我只想询问一次密码,但现在似乎自动添加了密码和密码确认字段(见下图)。即使我删除了所有字段,两个密码字段仍然保留。在我的设置中,我已经设置了帐户\u注册\u密码\u输入\u两次=False,但仍然显示密码字段三次。任何帮助都将不胜感激 Forms.py Models.py Allauth设置 HTML

我正在尝试用django allauth实现一个注册表单,一切都正常工作。然而,我已经实现了一个
CustomUserCreationForm
,它显示了下面列出的字段,从那时起,它已经三次询问密码了。我只想询问一次密码,但现在似乎自动添加了密码和密码确认字段(见下图)。即使我删除了所有字段,两个密码字段仍然保留。在我的设置中,我已经设置了
帐户\u注册\u密码\u输入\u两次=False
,但仍然显示密码字段三次。任何帮助都将不胜感激

Forms.py Models.py Allauth设置 HTML输出 试试这个:

class CustomUserCreationForm(UserCreationForm):
    
    class Meta(UserCreationForm.Meta):
        model = CustomUser
        fields = UserCreationForm.Meta.fields + ("first_name", "last_name", "mobile")
请注意,您只需要添加自定义字段。在您的情况下,您添加的密码已经存在[1]

关于帐户注册密码输入两次,您使用的是哪个版本的Django? 帐户\注册\密码\验证有效吗?此设置在0.26.0(2016-07-24)[2]版本之前使用

参考文献[1]:


参考文献[2]:

您正在使用django-allauth,如果您想使用django-allauth的设置,您必须从
allauth
导入
SignupForm

from allauth.account.forms import SignupForm

class CustomUserCreationForm(SignupForm):
    first_name = forms.CharField(max_length=55, label=_("First Name"))
    last_name = forms.CharField(max_length=55, label=_("Last Name"))
    mobile = forms.CharField(max_length=12, label=_("Mobile"))

    class Meta:
        fields = ("first_name", "last_name", "mobile", "email", "password")

    def save(self, request):

        # Ensure you call the parent class's save.
        # .save() returns a User object.
        user = super(MyCustomSignupForm, self).save(request)

        user.first_name = self.cleaned_data.get('first_name')
        user.last_name = self.cleaned_data.get('last_name')
        user.mobile = self.cleaned_data.get('mobile')
        user.save()

        # You must return the original result.
        return user

还可以查看文档。

我尝试了这个方法,但它只显示我想要的电子邮件和1密码字段,而不显示名字、姓氏或手机fields@FrancoisPaulsen,我编辑了我的答案。
AUTH_USER_MODEL = "accounts.CustomUser"
SITE_ID = 1
AUTHENTICATION_BACKENDS = [
    "django.contrib.auth.backends.ModelBackend",
    "allauth.account.auth_backends.AuthenticationBackend",
]
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
LOGIN_REDIRECT_URL = "home"
ACCOUNT_LOGOUT_REDIRECT = "home"
ACCOUNT_SESSION_REMEMBER = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = "email"
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = False
ACCOUNT_FORMS = {"signup": "accounts.forms.CustomUserCreationForm"}
class CustomUserCreationForm(UserCreationForm):
    
    class Meta(UserCreationForm.Meta):
        model = CustomUser
        fields = UserCreationForm.Meta.fields + ("first_name", "last_name", "mobile")
from allauth.account.forms import SignupForm

class CustomUserCreationForm(SignupForm):
    first_name = forms.CharField(max_length=55, label=_("First Name"))
    last_name = forms.CharField(max_length=55, label=_("Last Name"))
    mobile = forms.CharField(max_length=12, label=_("Mobile"))

    class Meta:
        fields = ("first_name", "last_name", "mobile", "email", "password")

    def save(self, request):

        # Ensure you call the parent class's save.
        # .save() returns a User object.
        user = super(MyCustomSignupForm, self).save(request)

        user.first_name = self.cleaned_data.get('first_name')
        user.last_name = self.cleaned_data.get('last_name')
        user.mobile = self.cleaned_data.get('mobile')
        user.save()

        # You must return the original result.
        return user
ACCOUNT_FORMS = {"signup": "yourapp.forms.CustomUserCreationForm"}