【问题标题】:Django check user permission in templateDjango在模板中检查用户权限
【发布时间】:2014-05-23 23:10:18
【问题描述】:

我想编辑用户权限。

我的观点

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 %}不工作。请给我一个解决这个问题的好方法。

【问题讨论】:

    标签: python django


    【解决方案1】:

    尝试以这种方式获取用户的权限:

    user_permissions = user.user_permissions.all()
    

    【讨论】:

      【解决方案2】:

      也许您可以将 user_permissions 替换为 request.user.get_all_permissions ? (如果您想获得发送请求的用户的权限)。

      您可以在文档中获得有关 this method 的更多信息。

      不过,根据this previous StackOverflow anwser,可能有更有效的方法来检查模板中的权限。

      【讨论】:

        猜你喜欢
        • 2012-03-17
        • 2013-12-26
        • 2018-10-04
        • 2013-06-02
        • 2013-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多