Cal*_*lum 1 django django-allauth
在我的应用程序中,我需要用户使用他们的电子邮件和密码登录.使用allauth它创建一个注册表单,其中email字段是可选的,并且有一个用户名字段.
我希望我的注册有三个字段:
我试过创建一个自定义表单,但由于某种原因它不起作用.我不知道如何从表单中删除用户名.
class SignupForm(forms.Form):
email = forms.EmailField(label='Email', required=True)
class Meta:
model = get_user_model()
def save(self, user):
user.email = self.cleaned_data['email']
user.save()
Run Code Online (Sandbox Code Playgroud)
它只需要允许我正确注册用户然后我可以处理其余的
Gre*_*egC 10
这是一个古老的问题,但如果将来有人帮助某人,这就是django-allauth在其文档中所说的:
ACCOUNT_AUTHENTICATION_METHOD(="username"|"email"|"username_email")指定要使用的登录方法 - 用户是否通过输入用户名,电子邮件地址或其中任何一个来登录.
和
ACCOUNT_USERNAME_REQUIRED(= True)用户在注册时需要输入用户名.请注意,即使ACCOUNT_AUTHENTICATION_METHOD设置为电子邮件,也会要求用户这样做.如果您不希望提示用户输入用户名,请设置为False.
所以在你的settings.py中你可以这样做:
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
Run Code Online (Sandbox Code Playgroud)
有关django-allauth配置的更多信息,请阅读: django-allauth文档 - 配置
解决这个问题很简单,这只是一个配置问题。我将这些添加到设置文件中:
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = True
ACCOUNT_SIGNUP_FORM_CLASS = 'accounts.forms.SignupForm'
Run Code Online (Sandbox Code Playgroud)