Django中的不同用户级别

时间:2015-04-30 08:01:33

标签: python django django-models django-templates django-authentication

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

我想区分3种类型的用户,并为每种类型的用户提供不同的内容。

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

如何根据用户类型显示不同的内容?

3 个答案:

答案 0 :(得分:1)

创建三个不同的类:

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

答案 1 :(得分:1)

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

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

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

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

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

答案 2 :(得分:0)

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

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

以下答案也可以帮助您设置权限

User groups and permissions