Django 2.1视图权限

4

Django文档表明,在Django 2.1中添加了新的View Permission,但没有进一步说明如何在Django Admin网站上使用它。

据我理解,这将是一种只读权限,但我会很感激任何对此新权限及其在管理网站上的行为有更好理解的人提供更多的解释。


发布注释链接至 https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.has_view_permission。 - Willem Van Onsem
2个回答

4

你是正确的Django 2.1 发布说明 描述了这个变化:

模型“查看”权限

在模型Meta.default_permissions中添加了“查看”权限。 运行迁移时,将自动创建新权限。

这允许给用户只读访问管理员中的模型ModelAdmin.has_view_permission() 是新的。该实现向后兼容,因为没有必要分配“查看”权限以允许具有“更改”权限的用户编辑对象。

此外,ModelAdmin.has_view_permission [Django-doc] 权限文档也对其进行了解释:

ModelAdmin.has_view_permission(request, obj=None)

如果允许查看 obj,则返回True,否则返回False。如果objNone,则应返回TrueFalse,以指示是否允许查看此类型的对象(例如,False将被解释为当前用户不允许查看此类型的任何对象)。

默认实现会在用户具有“更改”或“查看”权限时返回True

因此,在这种情况下,“更改”权限意味着“查看”权限(这是相当合理的,因为在查看之前更改对象会很奇怪)。


1
谢谢提供这些细节,非常有帮助。 - Paullo

0

你说得对,他们没有明确说明如何使用它,但我找到了如何使用它的方法。默认情况下,视图权限将返回 true,因此它的唯一用例是如果您想防止用户查看管理员对象。以下是如何实现。

class ViewAdmin(admin.ModelAdmin):
    
    def has_view_permission(self, request, obj=None):
        return False

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接