我希望Django通过电子邮件进行用户身份验证,而不是通过用户名。一种方法是将电子邮件值提供为用户名值,但我不想这样做。原因是,我有一个URL/profile/<username>/
,因此我不能有一个URL /profile/abcd@gmail.com/
。
另一个原因是所有电子邮件都是唯一的,但有时会出现用户名已被使用的情况。因此,我正在自动创建用户名为fullName_ID
。
我该如何让Django只使用电子邮件进行身份验证?
这是我创建用户的方式。
username = `abcd28`
user_email = `abcd@gmail.com`
user = User.objects.create_user(username, user_email, user_pass)
这是我登录的方式。
email = request.POST['email']
password = request.POST['password']
username = User.objects.get(email=email.lower()).username
user = authenticate(username=username, password=password)
login(request, user)
除了先获取用户名之外,还有其他登录方式吗?
request
参数包含在Django 2.1.1的authenticate
方法中。 - Ganesh