Django Allauth在注册页面中询问密码3次
我正在尝试用django allauth实现一个注册表单,一切都正常工作。然而,我已经实现了一个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
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"}