自定义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后 这样,你就可以按照下面剩下的步骤去做。

  1. 如果您的django项目以前使用django的默认用户模型, django.contrib.auth.models.User,或者如果您不熟悉使用 自定义用户模型,首先跳到notes 后面)。否则,继续前进

  2. 使用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
    
  3. cuser添加到INSTALLED_APPS设置:

    INSTALLED_APPS=[...'cuser',]
  4. 指定自定义模型作为项目的默认用户模型 使用设置中的AUTH_USER_MODEL设置。py:

    AUTH_USER_MODEL='cuser.CUser'
  5. 如果使用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')),...]
  6. 运行迁移

    python manage.py migrate
    
  7. 很有可能您希望foo@example.comFOO@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,)

许可证

在麻省理工学院的许可下发布有关详细信息,请参见许可证。

问题、评论或其他什么?

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将多个线程中的函数放入单个队列   数组在Java中,如何在不改变整数顺序的情况下找到整数组的顺序?   java控制器属于表示层?   java Apache Ivy和本地Maven repo如何处理使用Maven 3构建的快照   Java可与泛型类型进行比较   java这个表达式在泛型中是什么意思   JavaEclipse和TeamCity插件   java检测构造函数中的final是否为空   java如何在StanfordCoreNLP管道中同时使用词汇化和依赖性解析器?   java在AntUnit控制台日志中显示完整异常堆栈跟踪   lambda如何与Java 8供应商建立连锁关系   如何让GRPC的重试机制在Kubernetes集群中使用grpcjava工作?   如何使用openjdk:7 Docker映像和Gradle包装器避免“EC参数错误”?   java将集合映射扩展为一维映射新的“无法推断函数接口类型”