【问题标题】:Django 2.1 View PermissionDjango 2.1 查看权限
【发布时间】:2018-07-25 09:34:46
【问题描述】:

Django Doc 声明新的查看权限已添加到 Django 2.1,但没有进一步说明如何使用,特别是在 Django 管理站点上。

据我了解,这将是一种只读权限,但如果任何人对这个新权限及其在管理站点上的行为有更好的理解,我将不胜感激

【问题讨论】:

标签: django python-3.x django-permissions


【解决方案1】:

正确Django 2.1 release notes 描述了这一变化:

模型“查看”权限

“查看”权限已添加到模型 Meta.default_permissions。 运行时会自动创建新的权限 迁移。

这允许在管理员中授予用户对模型的只读访问权限ModelAdmin.has_view_permission() 是新的。实现是 向后兼容,因为不需要分配“视图” 允许具有“更改”权限的用户进行编辑的权限 对象。

此外,ModelAdmin.has_view_permission [Django-doc] 权限的文档解释如下:

ModelAdmin.has_view_permission(request, obj=None)

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

默认实现返回True,如果用户有 “更改”或“查看”权限

所以在这种情况下,“更改”权限意味着“查看”权限(这是相当合乎逻辑的,因为更改对象而不能先看到它会很奇怪)。

【讨论】:

  • 感谢您提供这些详细信息,这很有帮助
【解决方案2】:

你是对的,他们没有说明如何使用它,但我发现了如何使用它。默认情况下,查看权限将返回 true,因此它唯一的用例是如果您想阻止用户查看 admin 对象。这就是你可以做到的。

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

【讨论】:

    猜你喜欢
    • 2020-04-29
    • 2011-02-20
    • 2014-05-31
    • 2013-05-15
    • 2016-01-17
    • 2015-02-12
    • 2021-02-22
    • 2020-01-21
    相关资源
    最近更新 更多