Django需要所有身份验证电子邮件
在我的应用程序中,我需要用户使用他们的电子邮件和密码登录。它使用allauth创建一个注册表,其中电子邮件字段是可选的,还有用户名字段 我希望我的注册有三个字段:Django需要所有身份验证电子邮件,django,django-allauth,Django,Django Allauth,在我的应用程序中,我需要用户使用他们的电子邮件和密码登录。它使用allauth创建一个注册表,其中电子邮件字段是可选的,还有用户名字段 我希望我的注册有三个字段: 电子邮件 密码 再次输入密码 我尝试过创建一个自定义表单,但由于某些原因它不起作用。我不知道如何从表单中删除用户名 class SignupForm(forms.Form): email = forms.EmailField(label='Email', required=True)
- 电子邮件
- 密码
- 再次输入密码
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()
它只需要允许我正确注册用户,然后我就可以处理其余的问题。首先,您应该使用
ModelForm
来保存和对象实例以及表单数据,或者您可以使用内置的UserCreationForm
更多详细信息:
在models.py文件中,您应该将电子邮件
字段指定为用户名字段
。退房
最后是登录部分。您应该编写自己的自定义登录视图,以允许用户使用其电子邮件登录。在您的URL中放入如下内容:
(r'^email-login/', 'app.views.email_login', name="login"),
和views.py
:
from django.contrib.auth import authenticate, login
def email_login(request):
email = request.POST['email']
password = request.POST['password']
try:
get_user = UserProfile.objects.get(email=email)
except:
get_user = None
user = authenticate(username=get_user, password=password)
if user is not None:
if user.is_active:
login(request, user)
我没有测试代码,但一旦我用这种方法解决了我的问题。因此,这些可能会给你一些如何做到这一点的想法。我相信你能从中找到你需要的大部分答案
如果需要任何额外信息,请发表评论。解决方法很简单,只是配置问题。我在设置文件中添加了以下内容:
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = True
ACCOUNT_SIGNUP_FORM_CLASS = 'accounts.forms.SignupForm'
我同意Callum接受的答案,除了输入错误(所需帐户\用户名\应为False)。然而,我没有足够的分数以评论的形式留下我的贡献。Django 1.7的以下工作 在settings.py中:
# Sign IN settings
ACCOUNT_AUTHENTICATION_METHOD = 'email'
# Sign UP settings
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
这是一个老生常谈的问题,但如果它将来对某人有所帮助,django allauth在其文档中会这样说: 帐户身份验证方法(「用户名」「电邮」「用户名」电邮) 指定要使用的登录方法–用户是通过输入用户名、电子邮件地址登录,还是同时输入用户名和电子邮件地址 及 帐户\用户名\必需(=真) 用户在注册时需要输入用户名。请注意,即使ACCOUNT_AUTHENTICATION_METHOD设置为email,也会要求用户这样做。如果不希望提示用户输入用户名,则设置为False 因此,在您的settings.py中,您可以执行以下操作:
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
有关django allauth配置的更多信息,请阅读此处:
在我的用户模型中,我总是有这个用户名字段=“email”。我不想创建一些电子邮件登录,这很好。我要做的是为注册表单设置用户名和密码,因为默认情况下,它包含用户名、电子邮件(可选)和密码,如果用户因为无法登录而不输入电子邮件,则这些都不是很有用。
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'