Django all-auth:注册新帐户时不显示名字和姓氏



我正在使用Django-all auth来创建用户帐户。我想在注册时获取名字、姓氏、电子邮件和密码。但注册页面不显示名字和姓氏。注册页面仅显示电子邮件和密码。有人可以帮助我吗?如果您需要任何其他信息,请告诉我。谢谢!

Models.py

    class CustomUser(AbstractUser):
        # add additional fields in here
        first_name = models.CharField(max_length=128, blank=True, null=True)
        last_name = models.CharField(max_length=128, blank=True, null=True)
        def __str__(self):
            return self.email

Forms.py

    class CustomUserCreationForm(UserCreationForm):
        class Meta(UserCreationForm):
            model = CustomUser
            fields = ('email','first_name','last_name')

注册.html

    <h2>Sign Up</h2>
    <form method="post">
      {% csrf_token %}
      {{ form.as_p }}
      <button type="submit">Sign Up</button>
    </form>

根据文档,您可以覆盖注册表单。默认值为:

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

只需将ACCOUNT_FORMS = {'login': 'myapp.forms.CustomUserCreationForm'}添加到您的 settings.py 即可完成。

这对你有用吗?

这里有一些问题。首先,我不确定你是否要设置blank=True [Django-doc],因为这意味着默认情况下 Django 会隐藏这些字段不被编辑。你甚至可能不想将这些null=True [Django-doc],因为这意味着用户不需要填写这些。您可能不希望这样:

class CustomUser(AbstractUser):
    first_name = models.CharField(max_length=128, null=True)
    last_name = models.CharField(max_length=128, null=True)
    def __str__(self):
        return self.email

至于形式,你不应该UserCreationForm本身Meta子类。也许您想从UserCreationForm.Meta中对其进行子类:

class CustomUserCreationForm(UserCreationForm):
    class Meta(UserCreationForm.Meta):
        model = CustomUser
        fields = ('email','first_name','last_name')

最新更新