我正在尝试使用电子邮件地址作为用户名(使用Django 1.5的自定义用户模型)以及django-registration。
django-registration 1.0版的文档说: -
基本视图类是故意与用户模型无关的。简单地将它们子类化,并为您的自定义用户模型实现逻辑
我已经对注册视图进行了子类化,但不幸的是,看起来RegisterProfile仍然希望用户模型具有我的用户名字段。我只有电子邮件(以及名字,姓氏等)
这是一个错误吗?在我看来,django-registration仍然需要使用默认的基本用户模型 - 它只能使用ADDS到基本模型的自定义用户模型。
有什么办法吗?也许我可以将注册档案子类化?我该怎么做?
感谢。
答案 0 :(得分: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'
)
答案 1 :(得分:1)
原样,它很复杂。你需要:
问题是关于自定义用户和Django 1.5,所以我认为django-registration-email是一个糟糕的答案。 Thisi适用于Django< 1.5,创建虚假用户名并扭转问题。
答案 2 :(得分:0)
这可能会帮助你:
https://pypi.python.org/pypi/django-registration-email/0.5.1
他们已经在django-registration
中实现了这一点