我想区分用户模型,有高级用户和普通用户。我如何在Django中实现它,应该在users类中还是有其他方法?
5kgi1eie1#
有两种相对简单的方法。第一种是groups -请参阅这里的groups文档:可以为组分配权限,然后您可以检查。这样,您只需将用户添加到组,而不是为每个用户分配每个权限。当有许多不同的权限集时,这特别有用。然后您可以检查用户是否属于this question组,或检查特定权限。如果没有太多的其他权限,你可能想简单地添加一个字段到Custom User,(文档建议总是使用自定义用户)例如:
from django.contrib.auth.models import AbstractUser class CustomUser(AbstractUser): is_premium = models.BooleanField(default=False)
然后在您的www.example.com中添加以下内容settings.py
AUTH_USER_MODEL = '<myapp>.CustomUser'
AbstractUser是一个类,它允许你扩展普通用户而不破坏其他任何东西。有了这个字段,你可以很容易地测试,例如:
if request.user.is_premium:
l2osamch2#
你实际上已经可以通过可用的功能来做到这一点。Django已经有了组,你可以给组附加权限。这意味着您可以定义一个名为“高级”的组,例如将非高级用户没有的权限附加到该高级组。然后您可以将用户添加到该组。有关详细信息,请阅读文档的 * 权限和授权 * 部分。
2条答案
按热度按时间5kgi1eie1#
有两种相对简单的方法。第一种是groups -请参阅这里的groups文档:
可以为组分配权限,然后您可以检查。这样,您只需将用户添加到组,而不是为每个用户分配每个权限。当有许多不同的权限集时,这特别有用。然后您可以检查用户是否属于this question组,或检查特定权限。
如果没有太多的其他权限,你可能想简单地添加一个字段到Custom User,(文档建议总是使用自定义用户)例如:
然后在您的www.example.com中添加以下内容settings.py
AbstractUser是一个类,它允许你扩展普通用户而不破坏其他任何东西。有了这个字段,你可以很容易地测试,例如:
l2osamch2#
你实际上已经可以通过可用的功能来做到这一点。Django已经有了组,你可以给组附加权限。
这意味着您可以定义一个名为“高级”的组,例如将非高级用户没有的权限附加到该高级组。然后您可以将用户添加到该组。
有关详细信息,请阅读文档的 * 权限和授权 * 部分。