跳转到主要内容

具有插件和抽象类、混入类以创建自定义模型的泛型用户模型。

项目描述

Build Status Coverage Status Version

概述

提供泛型父 User 模型和几个子模型。

您可以在不影响父模型的外键的情况下启用和禁用子模型,并避免复杂的模式和数据迁移。

您甚至可以同时激活多个子模型!

工作原理

泛型父模型包含Django用户模型所需的最小内容。这是您的外键将指向的地方(通过 AUTH_USER_MODEL 设置),这允许您在更改子模型时避免模式迁移。

有关使此功能成为可能的基础系统的更多信息,请参阅django-polymorphic 文档。

插件

还提供了一些子模型作为 usertype 插件,用于常见的用例(电子邮件登录、用户名登录等),以及一些抽象模型和混入类,您可以使用它们来创建自己的插件。

例如

# myproject/usertypes/foo/models.py

from django.utils.translation import ugettext_lazy as _
from polymorphic_auth.models import AbstractUser

class FooUser(AbstractUser):
    foo = models.CharField(unique=True)

    USERNAME_FIELD = 'foo'

    class Meta:
        verbose_name = _('user with foo login')
        verbose_name_plural = _('users with foo login')

然后只需将您的插件添加到 INSTALLED_APPS 设置中,并在 POLYMORPHIC_AUTH['DEFAULT_CHILD_MODEL'] 设置中指向您的模型

# myproject/settings.py

AUTH_USER_MODEL = 'polymorphic_auth.User'
INSTALLED_APPS += ('myproject.usertypes.foo', )
POLYMORPHIC_AUTH = {'DEFAULT_CHILD_MODEL': 'foo.FooUser'}

ADMINS 和 MANAGERS 设置

默认应用程序包含一个 post_migrate 信号处理程序,将为 ADMINSMANAGERS 设置中的每个名称和电子邮件创建超级用户和工作人员帐户,并将凭据写入 sys.stdout(可配置)。

再见 ./manage.py createsuperuser

为了支持您的自定义插件,重写 AbstractUser.try_create 类方法,并从 nameemail 参数中派生所需的字段值。

例如

# myproject/usertypes/foo/models.py

import re

class FooUser(AbstractUser):
    ...

    @classmethod
    def try_create(self, **kwargs):
        email = kwargs.get('email', '')
        kwargs.setdefault('foo', re.sub(r'@.+', '', email))
        return super(FooUser, cls).try_create(**kwargs)

管理员

如果安装了多个插件,在管理员界面添加新用户时,将询问您要创建哪种类型的用户。如果只安装了一个插件,将直接跳转到该插件的修改表单。

您可以自定义插件的管理员类

# myproject/usertypes/foo/admin.py

from myproject.usertypes.foo.forms import FooForm
from polymorphic_auth.admin import UserChildAdmin

class EmailUserAdmin(UserChildAdmin):

    # define custom features here

待办事项

  • 插件的注册系统,而不是硬编码提供的那些,并检查 INSTALLED_APPS

  • 认证后端检查所有已注册的插件,而不仅仅是分配给 POLYMORPHIC_AUTH['DEFAULT_CHILD_MODEL'] 的那个。

  • 使 email 字段不区分大小写。

项目详情


下载文件

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

源代码分发

此版本没有可用的源代码分发文件。请参阅 生成分发存档 的教程。

构建分发

django_polymorphic_auth-0.4-py2.py3-none-any.whl (24.9 kB 查看哈希值)

上传时间 Python 2 Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面