Django all-auth电子邮件必填

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文档 - 配置


Cal*_*lum 5

解决这个问题很简单,这只是一个配置问题。我将这些添加到设置文件中:

ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = True
ACCOUNT_SIGNUP_FORM_CLASS = 'accounts.forms.SignupForm'
Run Code Online (Sandbox Code Playgroud)