【问题标题】:Django Practice to organize views that have same permissionDjango 实践组织具有相同权限的视图
【发布时间】:2021-01-20 00:57:06
【问题描述】:

login_requireduser_passes_testpermission_required 装饰器仅适用于特定功能,与 mixin 类似。但是,将@permission_required('polls.add_choice') 放在需要此类权限的每个视图中是否是一种好习惯?

我认为多个视图具有相同的权限是很常见的。例如,您有雇主和求职者,只有雇主可以添加公司名称/地址、发布职位和查看职位申请。网站的大部分页面都需要登录也是很常见的。

所以我的问题是,将相同权限分配给多个视图的习惯用法/做法是什么?我能找到的唯一食谱是Beginning Django - Listing 10-8. Permission checks in urls. Pay for include () definitions。另一种方法是交换类中的视图函数(作为静态方法)并做一些技巧来为所有方法添加权限。

有没有更好的解决方案?或者有什么理由不这样做?

【问题讨论】:

  • 考虑 djangorestframework

标签: python django permissions


【解决方案1】:

这还取决于您网站的在线用户数量。 它有成千上万的用户在线 - 尝试缓存该包装器。 或者全部重写为api

【讨论】:

    【解决方案2】:

    我认为在这种情况下使用 Django 的组系统是最理想的。 对多个视图使用相同的权限是完全可以的,因为在某些情况下,视图比 4 个 CRUD 视图更多,并且 2 个视图可以用于相同的用户/规则/组。

    【讨论】:

    • 谢谢 MajoRoth,同意你的看法。我只是在想是否是一个好的做法(以及如何)声明权限,比如说登录要求,整个模块,另外还有一些视图的 delete_permission。然后模块内的所有视图都需要登录,某些特殊视图还需要删除权限。这样做可以节省很多@login_required
    猜你喜欢
    • 2021-04-06
    • 2021-01-24
    • 2021-07-09
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    相关资源
    最近更新 更多