所以我目前在创建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中,并且它在循环所有用户时遇到问题,但我不确定如何解决这个问题。任何人都会非常感激。
答案 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 %}