我应该在模板和视图中使用Django权限检查吗?

bas*_*sh- 0 python django

是否建议或冗余设置模板和视图的权限?

考虑到对数据库的任何数据操作都是通过POST完成的

如果以下足够的权限?

{% if perms.system.view_employee %}
     <!-- content here -->
{% else %}
     <h1>Sorry you do not have permission to access this page<h2>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

或者我是否也应该实施服务器端检查(这样做是否多余或必要)?

def my_view(request):
    if not request.user.has_perm('polls.can_vote'):
        return HttpResponse("You can't access this page")
    else:
        # do stuff
        ...
Run Code Online (Sandbox Code Playgroud)

e-s*_*tis 6

  1. 模板中的检查是服务器端.
  2. 模板和视图中的权限检查不具有相同的目的:

    • 检查视图的权限将禁止访问整个页面.当此页面及其嵌入的特征用于APO时,您可以执行此操作.您处理资源访问.
    • 检查模板中的权限会禁止显示模板的某些部分.当您希望人们能够访问该页面时,您可以执行此操作,但有一些您不希望他们在页面上看到的内容.你处理显示.

在您的特定示例中,您必须在视图上设置权限检查以禁止任何人执行此操作.通常,如果使用POST访问视图,则您很少有机会获得模板权限检查,因为POST请求本质上是操作.

如果您:通常需要模板权限检查:

  • 有人不允许看到的页面的某些部分(如敏感数据)
  • 希望提高可用性,以显示仅与其权限级别相关的元素(菜单,表单等).实际上,如果此人无权访问管理员,则在菜单中显示指向管理员的链接是没用的.