【问题标题】:Use email as username with django-registration在 django-registration 中使用电子邮件作为用户名
【发布时间】:2013-07-23 17:40:58
【问题描述】:

我正在尝试使用电子邮件地址作为用户名(使用 Django 1.5 的自定义用户模型)以及 django-registration。

django-registration 1.0 版的文档说:-

基础视图类故意与用户模型无关。只需对它们进行子类化,并为您的自定义用户模型实现逻辑

我已经对注册视图进行了子类化,但不幸的是,RegistrationProfile 似乎仍然希望用户模型具有我的用户模型没有的用户名字段。我只有电子邮件(以及名字、姓氏等)

这是一个错误吗?在我看来,django-registration 仍然需要使用默认的基本用户模型——它只是能够使用添加到基本模型的自定义用户模型。

有什么办法可以解决吗?也许我也可以子类化注册资料?我该怎么做?

谢谢。

【问题讨论】:

    标签: django django-registration django-1.5


    【解决方案1】:

    我认为从长远来看,如果您继续使用默认用户配置文件,事情会变得更容易。如果您只是尝试添加使用电子邮件地址登录的功能,我建议您创建一个新的身份验证后端:

    from django.contrib.auth.backends import ModelBackend
    from django.contrib.auth.models import User
    
    
    class EmailModelBackend(ModelBackend):
        def authenticate(self, username=None, password=None):
            try:
                user = User.objects.get(email__iexact=username)
                if user.check_password(password):
                    return user
            except User.DoesNotExist:
                return None
    

    然后您需要将该后端添加到您的 settings.py:

    AUTHENTICATION_BACKENDS = (
        'yourproject.yourapp.yourmodule.EmailModelBackend',
        'django.contrib.auth.backends.ModelBackend'
    )
    

    【讨论】:

    • 这对使用 django 注册有什么帮助?
    【解决方案2】:

    照原样,它很复杂。您需要:

    • apply this patch 因为在 d-r-1.0 中,models.py 假定您的用户模型有一个“用户名”字段
    • 通过复制/粘贴/编辑registration/backends/default/views.py来创建您自己的“后端”
    • 从registration/forms.py复制/粘贴/编辑注册表单
    • 大多数情况下,您无需修改​​即可使用注册视图

    问题是关于自定义用户和 Django 1.5,所以我认为 django-registration-email 是一个不好的答案。 Thisi适用于Django

    【讨论】:

      【解决方案3】:

      这可能会对您有所帮助:

      https://pypi.python.org/pypi/django-registration-email/0.5.1

      他们已经在 django-registration 中实现了这个

      【讨论】:

      • 看起来不错。不幸的是,它似乎不适用于自定义用户模型。 Manager isn't available; User has been swapped for 'thursdayfootball.Player'
      猜你喜欢
      • 2011-09-15
      • 2011-02-27
      • 2012-02-18
      • 2015-04-27
      • 2011-04-02
      • 2015-09-30
      • 2011-02-23
      • 2011-04-11
      相关资源
      最近更新 更多