首页 > 解决方案 > Django Allauth 在注册页面中要求输入密码 3 次

问题描述

我正在尝试使用 django-allauth 实现一个注册表单,并且一切正常。但是,我已经实现了一个CustomUserCreationForm显示下面列出的字段的方法,从那时起它一直在要求输入密码 3 次。我只想询问一次密码,但现在似乎自动添加了密码和密码确认字段(见下图)。即使我删除了所有字段,两个密码字段仍然存在。在我的设置中,我已经设置ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = False了密码字段,但仍然显示了三次。任何帮助,将不胜感激!

表格.py

from django.contrib.auth import get_user_model
from .models import CustomUser
from django.contrib.auth.forms import UserCreationForm, UserChangeForm


class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = get_user_model()
        fields = ("first_name", "last_name", "mobile", "email", "password")

模型.py

from django.contrib.auth.models import AbstractUser
from django.db import models


class CustomUser(AbstractUser):
    first_name = models.CharField(max_length=55, default="")
    last_name = models.CharField(max_length=55, default="")
    mobile = models.CharField(max_length=12, default="")

Allauth 设置

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"}

HTML 输出

在此处输入图像描述

标签: djangodjango-formsdjango-allauth

解决方案


尝试这个:

class CustomUserCreationForm(UserCreationForm):
    
    class Meta(UserCreationForm.Meta):
        model = CustomUser
        fields = UserCreationForm.Meta.fields + ("first_name", "last_name", "mobile")

请注意,您只需要添加自定义字段。在您的情况下,您在密码已经存在时添加了密码 [1]。

关于 ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE,您使用的是哪个版本的 Django?ACCOUNT_SIGNUP_PASSWORD_VERIFICATION 有效吗?此设置用于预发布 0.26.0 (2016-07-24) [2]。

参考文献 [1]:https ://docs.djangoproject.com/en/3.1/topics/auth/customizing/

参考文献 [2]:https ://django-allauth.readthedocs.io/en/latest/release-notes.html?highlight=ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE#id60


推荐阅读