自定义django用户模型,使电子邮件成为用户名字段。

django-username-email-fullname的Python项目详细描述


cuser使你可以很容易地使用电子邮件地址作为你的身份证明。 而不是用户名。

cuser是一个自定义django用户模型(扩展了AbstractBaseUser),因此 用起来很费劲。

cuser和vanilla django的唯一区别是电子邮件 地址是^ {TT3}$(用户名不存在)。

cuser支持django 1.8+

为什么使用cuser?

因为你想要django.contrib.auth中的所有内容,除了 username字段,您还希望用户使用电子邮件地址登录。 而且您不想创建自己的自定义用户模型或身份验证 后端。

安装和设置

  1. 如果您以前使用过django的默认用户模型, django.contrib.auth.models.User,先跳到注释(然后来 后面)。否则,继续前进!

  2. 使用pip install django-username-email-fullname

    安装
  3. cuser添加到INSTALLED_APPS设置:

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

    AUTH_USER_MODEL='cuser.CUser'
  5. 您应该引用用户而不是直接引用用户 使用django.contrib.auth.get_user_model()

    的模型
  6. 如果使用django的默认AuthenticationForm类,则 强烈建议将其替换为 库瑟。这将使<input>具有其type属性集 到email,浏览器的自动完成功能将建议您发送电子邮件 地址而不是用户名。例如,如果您的项目使用 django的默认视图login,这是您将在 为了利用cuser的AuthenticationForm类:

    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')),...]
  7. 运行迁移。

    python manage.py migrate
    

配置

要覆盖任何默认设置,请创建名为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模型并注册自己的django默认代理模型Group 模型(也称为Group)。如果您希望django的默认值 Group模型将与cuser的^{tt30}出现在管理的同一部分中$ 模型。

注释

如果有引用django的User模型的表,则必须 删除这些表和迁移,然后重新迁移。这将确保 一切都是从一开始就正确设置的。

当您定义一个外键或与^{tt2}的多对多关系时$ 模型,应该使用^{tt10}指定自定义模型$ 设置。

例如:

fromdjango.confimportsettingsfromdjango.dbimportmodelsclassProfile(models.Model):user=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,)

许可证

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

问题、评论或其他什么?

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

推荐PyPI第三方库


热门话题
java Jsonify使用Jackson来定义嵌套对象   在Swing中禁用java图形调试   java Selenium Webdriver拖放在Jenkins上不起作用   java我对一个显示器的问题有一个非常不切实际的询问   java增强的“for”循环导致ArrayIndexOutOfBoundsException   ArrayAdapter适用于Java中的安卓编程,字符串数组   linux在Ubuntu上通过PulseAudio播放Java音频文件时出错   java在Spring应用程序中加载内部(类路径)和外部属性文件   java使用Maven连接到mySQL   Java应用程序的设计   websocket在电报api java中与dc的连接   java XMLStreamException,因为xml中的(&N)   java从控制台输出到JTextArea   Java导出文本文件   java实现parseInt方法   java为什么servlet容器会同步对特定资源/servlet的多个请求的访问?   循环中的Java“while”变量   用Java编程一个国际象棋游戏,gameOver布尔不起作用   java如何获得真正的JPanel大小?