我正在使用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')