Django中不同的用户级别

Posted

技术标签:

【中文标题】Django中不同的用户级别【英文标题】:DIfferent user levels in Django 【发布时间】:2015-07-09 19:56:00 【问题描述】:

我正在使用 Django 的身份验证。

我想区分3类用户,为每类用户呈现不同的内容。

如何区分这三种类型?我应该添加一个指定用户类型的选择字段还是创建 3 个组并将用户添加到正确的组?

如何根据用户类型呈现不同的内容?

【问题讨论】:

【参考方案1】:

如果您只需要为不同类型的用户分配不同的权限,请继续创建用户组 它很简单 from django.contrib.auth.models 导入组

newgroup = Group.objects.create(name=group_name)

下面的答案也会帮助你设置权限

User groups and permissions

【讨论】:

【参考方案2】:

请注意,django.contrib.auth 主要适用于身份验证和授权。

您应该做什么取决于type of user 的确切含义。

type代表用户拥有不同权限级别的典型情况下,您应该考虑使用权限系统(或运行现有的权限系统,例如here)。

如果type 表示用户的固有属性(如男/女/其他),则使用自定义用户并向其添加新的 ChoiceField。

如果type 代表更复杂的东西,可能会与其他模型有关系,那么我会选择一个新模型UserType

【讨论】:

【参考方案3】:

创建三个不同的类:

class Level1(models.model):
    member = models.ForeignKey(User)

class Level2(models.model):
    member = models.ForeignKey(User)

class Level3(models.model):
    member = models.ForeignKey(User)

在视图中为不同级别的每个用户检查和呈现不同的内容:

if Level1.objects.filter(memeber=user).count() > 0:
    // present the content you want
else Level2.objects.filter(memeber=user).count() > 0:
    // present the content you want
else Level3.objects.filter(memeber=user).count() > 0:
    // present the content you want

【讨论】:

以上是关于Django中不同的用户级别的主要内容,如果未能解决你的问题,请参考以下文章

管理员中的 Django 自定义用户模型应用程序级别权限管理

Django rest框架在不同文件上记录不同级别

在SQL数据访问中如何对不同级别设置访问权限

django中不同用户类型的单独“管理”界面

Django REST API:使特定权限级别的字段只读

将应用程序级别的用户名/用户 ID 注入 nginx/Apache 日志