Skip to main content
 首页 » 编程设计

python之Django之权限和配置文件

2024年09月03日28thcjp

我有几个不同的配置文件。我想将权限与这些配置文件相关联。我这样做是这样的:

class StudentProfile(UserProfile): 
    school = models.CharField(max_length=30) 
    class Meta: 
        permissions = ( 
            ("is_student","Can access student pages"), 
        ) 

但是,当我尝试在该配置文件对象上使用 has_perm 检查该权限是否存在时,我收到错误消息“‘StudentProfile’对象没有属性‘has_perm’”,难道我不应该以这种方式检查权限吗?我已经阅读了文档,这就是我认为我应该做的

编辑:再次阅读文档后,has_perm 似乎是属于用户的方法,而不是他们的配置文件。但是,当我尝试显示权限时:

print user.get_all_permissions() 

我得到一个空集。我不应该看到像“appname.is_student”这样的东西

请您参考如下方法:

.has_perm 是 User 对象上的方法,而不是 UserProfile 对象上的方法。如果您要验证用户是否具有 has_student 权限,则需要执行以下操作:

user.has_perm('profiles.is_student') 

假设您的 StudentProfile 模型在 profiles 应用程序中。

编辑:为了解决您改写的问题,您应该以正常方式向组或特定用户分配权限,并使用 User.has_perm。您的后一个示例完全违背了 Django 权限系统的要点。