【问题标题】:Django Email As User NameDjango 电子邮件作为用户名
【发布时间】:2015-04-27 00:41:27
【问题描述】:

有什么方法可以在不指定自定义用户模型的情况下使用电子邮件作为用户名。我是 django 的新手,从过去的几个小时开始,我正在寻找并试图找到一种方法。我尝试创建自定义模式,但随后一切都像管理员登录一样发生了变化。

其次,有没有办法为特定应用定义自定义模型。例如。仅正面。所以后端保持原样。

我只需要使用电子邮件作为用户登录的用户名。

可以用吗

USERNAME_FIELD = 'email'

【问题讨论】:

  • 这是一个黑客。我想知道是否有适当的解决方案。
  • @Waqas 如果你愿意,我可以提供有关如何使用电子邮件而不是用户名登录的详细信息...
  • 为什么 USERNAME_FIELD 不适合您?是因为您的电子邮件字段不是唯一的吗?还是因为您也希望能够通过用户名登录?

标签: python django django-models


【解决方案1】:

使用表单获取邮箱和密码

email = form.cleaned_data['email']
password = form.cleaned_data['password']

如果给定的电子邮件与现有记录匹配。

try:
    user = User.objects.get(email=email)
    if user.check_password(password):
        username = user.username
        user = authenticate(username=username, password=password)
        login(request, user)
        messages.success(request, "Welcome {}".format(email))
    else:
        messages.error(request, "Password not match for  {}".format(email))
except User.DoesNotExist:
    pass

【讨论】:

    【解决方案2】:

    我实际上最终使用了 django-authtools

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 2011-04-02
      • 2012-02-18
      • 2013-07-23
      • 1970-01-01
      • 2012-02-06
      • 2010-10-21
      • 2012-12-09
      相关资源
      最近更新 更多