自定义django用户模型,使电子邮件成为用户名字段。
django-username-email的Python项目详细描述
CUser使你可以很容易地使用电子邮件地址作为你的身份证明 而不是用户名
cuser是一个自定义django用户模型(扩展了AbstractBaseUser),因此 用起来很费劲。
cuser和vanilla django的唯一区别是电子邮件 地址是^ {TT3}$(用户名不存在)。
cuser支持django 1.11、2.0、2.1和2.2。如果你需要使用CUser Django 1.8-Django 1.10,必须安装较旧的未维护版本 cuser,如“安装和设置”部分所述。
为什么使用CUser?
因为你想要django.contrib.auth中的所有内容,除了 username字段,您还希望用户使用电子邮件地址登录。 而且您不想创建自己的自定义用户模型或身份验证 后端
安装和设置
important:为了保持简单,下面的步骤将指导您完成 为Django项目的用户使用CUser的CUser模型的过程 模型但是,强烈建议您设置自定义用户模型 扩展了cuser的AbstractCUser类,即使cuser的CUser模型 对您来说已经足够了(这样,如果需要,您可以自定义用户模型 出现)。如果not希望遵循此建议,并且只希望 使用cuser的CUser模型,只需遵循以下步骤(您可以跳过 本段其余部分)。如果希望遵循此建议,则 仍应遵循以下步骤,但进行以下调整:之后 第2步,跟随 these instructions, 但不是用from django.contrib.auth.models import AbstractUser 使用from cuser.models import AbstractCUser,而不是使用 from django.contrib.auth.admin import UserAdmin使用 from cuser.admin import UserAdmin。那么对于下面的步骤中的第3步,您 应该将AUTH_USER_MODEL设置为自定义用户模型,而不是cuser的 CUser型号。然后应该运行python manage.py makemigrations后 这样,你就可以按照下面剩下的步骤去做。
如果您的django项目以前使用django的默认用户模型, django.contrib.auth.models.User,或者如果您不熟悉使用 自定义用户模型,首先跳到notes 后面)。否则,继续前进
使用pip:
安装# Django 2.0, 2.1, or 2.2 pip install django-username-email # Django 1.11 pip install "django-username-email<2.2"# Django 1.8 - Django 1.10 (unmaintained) pip install django-username-email==2.1.2
将cuser添加到INSTALLED_APPS设置:
INSTALLED_APPS=[...'cuser',]
指定自定义模型作为项目的默认用户模型 使用设置中的AUTH_USER_MODEL设置。py:
AUTH_USER_MODEL='cuser.CUser'
如果使用django的默认AuthenticationForm类,则 强烈建议将其替换为 库瑟。这将使<input>具有其type属性集 到email,浏览器的自动完成功能将建议您发送电子邮件 地址而不是用户名。例如,如果您的项目使用 Django的默认视图LoginViewview(或Django中的loginview<;1.11),这是 为了利用cuser的 AuthenticationForm类:
fromcuser.formsimportAuthenticationFormfromdjango.conf.urlsimportinclude,urlfromdjango.contrib.auth.viewsimportLoginViewurlpatterns=[url(r'^accounts/login/$',LoginView.as_view(authentication_form=AuthenticationForm),name='login'),url(r'^accounts/',include('django.contrib.auth.urls')),...]
或者如果您使用的是Django<;1.11:
fromcuser.formsimportAuthenticationFormfromdjango.conf.urlsimportinclude,urlfromdjango.contrib.auth.viewsimportloginurlpatterns=[url(r'^accounts/login/$',login,{'authentication_form':AuthenticationForm},name='login'),url(r'^accounts/',include('django.contrib.auth.urls')),...]
运行迁移
python manage.py migrate
很有可能您希望foo@example.com和FOO@example.com 被视为相同的电子邮件地址。有很多种方法 做这个你如何处理它将取决于你的项目的需要和 个人偏好,所以库瑟没有提供解决方案 盒子。如果这适用于你,你需要自己解决这个问题。
配置
要覆盖任何默认设置,请创建名为CUSERin的字典 你的settings.py和你想要覆盖的每个设置。例如:
CUSER={'app_verbose_name':'Authentication and Authorization','register_proxy_auth_group_model':True,}
这些是设置:
app_verbose_name(默认值:_("Custom User"))
这控制cuser将用于其AppConfigclass'的值。 verbose_name。
register_proxy_auth_group_model(默认值:False)
当设置为True时,CUser的admin.py将注销Django的默认值 Group模型和regis它自己的Django默认代理模型Group 模型(也称为Group)。如果您希望django的默认值 Group模型将与cuser的^{tt6}出现在管理的同一部分中$ 模型
注释
如果有引用django的User模型的表,则必须 删除这些表和迁移,然后重新迁移。这将确保 一切都是从一开始就正确设置的。
您应该引用用户模型,而不是直接引用用户 使用django.contrib.auth.get_user_model()
当您定义一个外键或与^{tt2}的多对多关系时$ 模型,应该使用^{tt14}指定自定义模型$ 设置。
例如:
fromdjango.confimportsettingsfromdjango.dbimportmodelsclassProfile(models.Model):user=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,)
许可证
在麻省理工学院的许可下发布有关详细信息,请参见许可证。