跳转到主要内容

django-unique-user-email

项目描述

django-unique-user-email

通过使Django项目的auth.User.email唯一,启用默认用户模型以通过电子邮件登录。

关于原因的简要说明?

Django的“泄漏电池”是其建议创建自定义用户模型。认证是如此核心和标准化,以至于在99.99%的情况下,绝大多数项目根本不需要自定义核心认证模型。这是Django应该提供的电池。

暴露认证模型会产生复杂性税。随着认证模型成为与认证无关的用户相关数据的通用垃圾场,会产生性能税。当用户遇到自定义用户模型时,会产生学习税,以及关于其重要性的(坦白地说,不恰当的)警告。

再次强调,绝大多数项目根本不需要自定义核心认证模型。

我能用我的电子邮件登录吗?

大多数项目,所有人想要的只是通过电子邮件登录。通过使默认的auth.User模型具有唯一的电子邮件字段和一些其他小东西,这就实现了。

这个包的目标是为您提供在Django的默认User模型中实现通过电子邮件登录所需的工具。我相信这应该是Django本身的一个选项,因此它也是一个未来讨论的实验。

更长的讨论,即将到来。在此之前,我写了一篇博客文章,详细说明了这一点

概述

  • pip安装

      pip install django-unique-user-email
    
  • 添加到INSTALLED_APPS

      INSTALLED_APPS = [
          "django.contrib.admin",
          "django.contrib.auth",
          "django.contrib.contenttypes",
          "django.contrib.sessions",
          "django.contrib.messages",
          "django.contrib.staticfiles",
    
          "unique_user_email",
          ...
      ]
    
  • 迁移以将唯一约束添加到User.email

  • 安装认证后端以允许电子邮件登录

      AUTHENTICATION_BACKENDS = [
          'unique_user_email.backend.EmailBackend',
          'django.contrib.auth.backends.ModelBackend',
      ]
    
  • 使用自定义的AuthenticationForm通过usernameemail登录。

      # urls.py
      from django.contrib.auth.views import LoginView
      from unique_user_email.forms import AuthenticationForm
    
      urlpatterns = [
          # Route LoginView before other auth views to match first.
          # https://docs.django.ac.cn/en/dev/topics/auth/default/#module-django.contrib.auth.views
          path(
              "accounts/login/",
              LoginView.as_view(form_class=AuthenticationForm),
              name="login",
          ),
          ...
      ]
    

更完整的教程,即将到来

测试

  • 克隆仓库,创建虚拟环境,并使用pip install -e .安装该软件包。

  • 您可以使用just test运行。

    这包含了完整的命令

      django-admin test --settings=tests.settings --pythonpath=.
    

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源代码分发

django-unique-user-email-23.2.tar.gz (10.0 kB 查看散列)

上传时间 源代码

构建分发

django_unique_user_email-23.2-py2.py3-none-any.whl (6.5 kB 查看散列)

上传时间 Python 2 Python 3

支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面