2013-07-24 78 views
3

我想用电子邮件地址作为用户名(使用Django 1.5的自定义用户模型)以及Django的注册。使用电子邮件作为用户名与Django的注册

为django的登记的1.0版本的文档说: -

基本视图类是故意用户模型无关。简单地将它们划分子类,并为您的自定义用户模型实现逻辑

我已经子类化了注册视图,我只有电子邮件(以及名字,姓氏等)

这是一个错误?在我看来,像Django注册仍然需要使用默认的基本用户模型 - 它只是能够使用ADDS到基本模型的自定义用户模型。

有没有什么办法呢?也许我可以继承注册配置文件?我会怎么做?

谢谢。

回答

2

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

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' 
) 
+0

这对使用django注册有什么帮助? – bodger

1

原来,这很复杂。您需要:

  • apply this patch因为DR-1.0,models.py假设你的用户模型有一个“用户名”栏
  • 通过复制/粘贴/编辑注册/后端/默认创建自己的“后台” /views.py
  • 复制/粘贴/编辑登记表以及从注册/ forms.py
  • 大部分你可以使用注册的观点不加修饰

问题的时间是有关自定义用户和Django 1.5,所以我认为django-registration-email是一个不好的答案。 Thisi是为Django < 1.5创建假用户名并解决问题。

相关问题