我希望django通过电子邮件验证用户,而不是通过用户名.一种方法是提供电子邮件值作为用户名值,但我不希望这样.原因是,我有一个网址/profile/<username>/,因此我没有网址/profile/abcd@gmail.com/.
另一个原因是所有电子邮件都是唯一的,但有时会发生用户名.因此我将自动创建用户名为fullName_ID.
我怎样才能让Django通过电子邮件进行身份验证?
这就是我创建用户的方式.
username = `abcd28`
user_email = `abcd@gmail.com`
user = User.objects.create_user(username, user_email, user_pass)
Run Code Online (Sandbox Code Playgroud)
这是我登录的方式.
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)
Run Code Online (Sandbox Code Playgroud)
除了首先获取用户名之外,还有其他任何登录信息吗?
首先,这不是如何对电子邮件/密码对进行身份验证的问题,而是如何生成逻辑,如果您愿意,还可以生成漂亮的数据结构.
我想在给定的django项目中使用电子邮件作为用户名.但是,我无法重新使用auth.User模型提供的字段,原因至少有两个:
auth.User.username的字段max_length是30个字符,对于某些电子邮件地址可能不够.
auth.User.email不是唯一的 - 显然不能满足前提条件,即用户名必须是唯一的.
因此,一个显而易见的方法是将用户名存储在自定义配置文件中,该配置文件链接到auth.User.在这种情况下,我们必须处理以下问题:
以下问题源于提出的解决方案:
为了增加石油,django开发人员不太可能在任何可预见的未来修复此限制 - 请参阅http://code.djangoproject.com/ticket/11365
所以问题是:有没有其他方法可以做到这一点你是否看到上面提出的解决方案有任何其他缺点?
谢谢!