如何在Django模板中显示用户权限

时间:2018-03-28 20:22:32

标签: python html django django-templates

所以我目前在创建Django用户时设置了一些用户权限。

我想显示所有用户的表格以及有关用户的信息,例如用户名,密码权限等。

执行此操作的代码与此类似。

<table id='usersTable'>
                    <tr>
                        <th></th>
                        <th>Status</th>
                        <th>Username</th>
                        <th>First Name</th>
                        <th>Last Name</th>
                        <th>Email</th>
                        <th>Last Login</th>
                        <th>Expiry Date</th>
                        <th>Permission</th>
                    </tr>
                    {% for user in userlist %}
                    <tr id='{{ user.id }}' class='user-row urow'>
                        <td>
                            <input type="checkbox" name="check" class='userSelection'>
                        </td>
                        <td>
                            <div class="status"></div>
                        </td>
                        <td>{{user.username}}</td>
                        <td>{{user.first_name}}</td>
                        <td>{{user.last_name}}</td>
                        <td>{{user.email}}</td>
                        <td>{{user.last_login}}</td>
                        <td>{{user.userprofile.date_expiry}}</td>
                        {% load user_perm %}
                        <td>
                            {% if user|check_permission:'2018_map_view' %}
                               I have 2018 access
                            {% endif %}
                            {% if user|check_permission:'2017_map_view' %}
                               I have 2017 access
                            {% endif %}
                        </td>
                    </tr>
                    {% endfor %}
                </table>

我在底部有尝试的代码来显示表中的每个用户权限,但它似乎不起作用。

我的模板标签代码如下所示

from django.template import Library

register = Library()

@register.filter()
def check_permission(user, permission):
        permission = user.has_perm(permission)
        print(permission)
        return user.has_perm(permission)

我认为问题出在我的用户userList中,并且它在循环所有用户时遇到问题,但我不确定如何解决这个问题。任何人都会非常感激。

1 个答案:

答案 0 :(得分:0)

这样做更好:

来自django导入模板 register = template.Library()

@register.filter()
def check_permission(user, permission):
    if user.user_permissions.filter(codename = permission).exists():
        return True
    return False

如果存在权限,它会以有效的方式检查,然后在模板加载标记内部并使用它:

{%load mytags%}  <!-- Assuming this is your tags.py file name -->

{% if user|check_permission:'2018_map_view' %}
        ... do your staff ...
{% endif %}