Django all-auth: не отображает имя и фамилию при регистрации в новой учетной записи - PullRequest
1 голос
/ 15 июня 2019

Я использую 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')

Signup.html

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

Ответы [ 2 ]

1 голос
/ 16 июня 2019

Согласно Документам , вы можете переопределить форму регистрации. Значения по умолчанию:

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 .

Это работает для вас?

0 голосов
/ 15 июня 2019

Здесь есть некоторые проблемы. Прежде всего, я не уверен, хотите ли вы установить 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

Что касается формы, вы должны не подкласс Meta от самого UserCreationForm. Возможно, вы хотите создать подкласс из UserCreationForm.Meta:

class CustomUserCreationForm(UserCreationForm):

    class Meta(<b>UserCreationForm.Meta</b>):
        model = CustomUser
        fields = ('email','first_name','last_name')
...