具有插件和抽象类、混入类以创建自定义模型的泛型用户模型。
项目描述
概述
提供泛型父 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 信号处理程序,将为 ADMINS 和 MANAGERS 设置中的每个名称和电子邮件创建超级用户和工作人员帐户,并将凭据写入 sys.stdout(可配置)。
再见 ./manage.py createsuperuser!
为了支持您的自定义插件,重写 AbstractUser.try_create 类方法,并从 name 和 email 参数中派生所需的字段值。
例如
# 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 字段不区分大小写。
项目详情
哈希值 for django_polymorphic_auth-0.4-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8b856173479d7373774c192f8d9badad8ff47a5e043317db58d659ae359df896 |
|
MD5 | 2ab164a0b7c8b85a21a18d8696b0352e |
|
BLAKE2b-256 | 328c7a1c0ba62072a52a7ea957eae728afc400f79cea4ef7ab363c0e1c93d94a |