Django 在模板中检查用户权限

0 投票
2 回答
2415 浏览
提问于 2025-04-18 02:10

我想要编辑用户的权限。

这是我的视图

def edit_roles(request,username):
    user = User.objects.get(username=username)
    user_permissions = user.get_all_permissions()
    permissions = Permission.objects.filter(Q(codename='can_create_product') | Q(codename='can_view_product')
    return render_to_response('users/edit_user_roles.html',{'permissions':permissions,'user_permissions':user_permissions},context_instance=RequestContext(request))

这是我的模板

<table>
    <tr>
        <th>Permission</th>
        <th>Access</th>
    </tr>
    {% for permission in permissions %}
        <tr class="item-row">
            <td>
                {{permission.name}}
            </td>
            <td>
                <input type="checkbox" name="" {% if permission in user_permissions  %} checked="checked" {% endif %} />
            </td>
        </tr>
    {% endfor %}
</table>

现在我得到了用户的权限。但是 {% if permission in user_permissions %} 这个判断没有生效。请给我一些好的建议来解决这个问题。

2 个回答

1

也许你可以用 request.user.get_all_permissions 来替代 user_permissions?(如果你想获取发送请求的用户的权限的话)。

你可以在文档中获取关于 这个方法 的更多信息。

不过,根据 之前在StackOverflow上的一个回答,在模板中检查权限可能有更有效的方法。

1

试着用这种方式来获取用户的权限:

user_permissions = user.user_permissions.all()

撰写回答