django - 限制用户数量

时间:2017-05-30 23:56:07

标签: django

(对不起我的英文)

只有一个问题,是否存在限制可以在Django App中创建的用户数量的方法?

我在很多地方搜索,我只找到了这个,但我在回购中看到最后一次更新是3年前https://github.com/1stvamp/django-limit-users

我不知道在django的核心是否存在任何方式,或者我是否必须覆盖某些东西!

非常感谢!

1 个答案:

答案 0 :(得分:1)

虽然我没有时间对新的Django测试https://github.com/1stvamp/django-limit-users,但它使用django的信号朝着正确的方向前进:https://docs.djangoproject.com/en/dev/ref/signals/

例如,您可以编写pre_savepost_save处理程序,并将其连接到保存用户模型之前/之后发出的信号。

一个简单的post_save处理程序可能如下所示:

def user_post_save(sender, instance, created, **kwargs):
    if created and sender.objects.count() > MY_LIMIT:
        instance.is_active = False
        instance.save()

一个简单的pre_save处理程序如下所示:

def user_pre_save(sender, instance, **kwargs):
    if instance.id is None and sender.objects.count() > MY_LIMIT:
        instance.is_active = False  # Make sure the user isn't active

代替pre_save处理程序中的最后一行,您还可以引发异常,以确保用户甚至不会保存到数据库中。

另一种选择是将其与自定义用户模型结合使用,而不是is_active,您可以使用over_limit或任何您想要的内容。您链接的回购是使用单独的DisabledUser模型实现的。