检查模板中的用户权限(不请求用户)
Check user permission in template (not request user)
您好,有什么方法可以检查模板中自定义用户 nit 请求用户的权限。
代码示例:
{% for agency_user in users %}
<tr>
<td>{{ agency_user.username }}</td>
<td>{{ agency_user.get_full_name }}</td>
<td>{{ agency_user.groups.all.first.name }}</td>
<td>{{ agency_user.min_price }}</td>
<td>{{ agency_user.max_price }}</td>
{% if agency_user|has_perm:'may_see_commerce_sell' %} #not working
<td>some action</td>
{% else %}
<td>some action</td>
{% endif %}
<td>
<a href="{% url 'user_edit' agency_user.id %}" class="edit icon"></a>
<a user-id="{{ agency_user.id }}" class="trash icon" title="some action"></a>
</td>
</tr>
{% empty %}
<td style="text-align: center" colspan="11">some action</td>
{% endfor %}
或者我必须为每个用户权限编写自定义模型方法?
类似于在配置文件模型中思考:
def sell_commerce(self):
if self.has_perm('may_see_commerce_sell'):
return True
else:
return False
在您的应用程序目录中创建一个目录,将其命名为 templatetags
然后在 templatetags
中创建 mytage.py
文件然后执行类似这样的操作
#mytage.py
from django import template
register = template.Library()
@register.filter()
def check_permission(user, permission):
if user.user_permissions.filter(codename = permission).exists():
return True
return False
然后在模板中加载您的标签
{%load mytags%}
<html lang="en">
.................
{% if user|check_permission:'delete_bills' %}
... do something if have permission ...
{% endif %}
...........
</html>
您可以按名称或代号字段过滤权限
列出当前用户的所有权限
登录后在您的 django 视图中的任意位置
for perm in request.user.permissions.all():
print(perm.name)
print(perm.codename)
print(perm)
这将在控制台中打印当前登录用户的所有权限
您可以自己创建一个模板过滤器来检查这一点,例如..
from django.template import Library
register = Library()
@register.filter()
def check_permission(user, permission):
return user.has_perm(permission)
那就这样使用吧..
{% if user|check_permission:'may_see_commerce_sell' %}
... do stuff ...
{% endif %}
您好,有什么方法可以检查模板中自定义用户 nit 请求用户的权限。 代码示例:
{% for agency_user in users %}
<tr>
<td>{{ agency_user.username }}</td>
<td>{{ agency_user.get_full_name }}</td>
<td>{{ agency_user.groups.all.first.name }}</td>
<td>{{ agency_user.min_price }}</td>
<td>{{ agency_user.max_price }}</td>
{% if agency_user|has_perm:'may_see_commerce_sell' %} #not working
<td>some action</td>
{% else %}
<td>some action</td>
{% endif %}
<td>
<a href="{% url 'user_edit' agency_user.id %}" class="edit icon"></a>
<a user-id="{{ agency_user.id }}" class="trash icon" title="some action"></a>
</td>
</tr>
{% empty %}
<td style="text-align: center" colspan="11">some action</td>
{% endfor %}
或者我必须为每个用户权限编写自定义模型方法?
类似于在配置文件模型中思考:
def sell_commerce(self):
if self.has_perm('may_see_commerce_sell'):
return True
else:
return False
在您的应用程序目录中创建一个目录,将其命名为 templatetags
然后在 templatetags
中创建 mytage.py
文件然后执行类似这样的操作
#mytage.py
from django import template
register = template.Library()
@register.filter()
def check_permission(user, permission):
if user.user_permissions.filter(codename = permission).exists():
return True
return False
然后在模板中加载您的标签
{%load mytags%}
<html lang="en">
.................
{% if user|check_permission:'delete_bills' %}
... do something if have permission ...
{% endif %}
...........
</html>
您可以按名称或代号字段过滤权限
列出当前用户的所有权限
登录后在您的 django 视图中的任意位置
for perm in request.user.permissions.all():
print(perm.name)
print(perm.codename)
print(perm)
这将在控制台中打印当前登录用户的所有权限
您可以自己创建一个模板过滤器来检查这一点,例如..
from django.template import Library
register = Library()
@register.filter()
def check_permission(user, permission):
return user.has_perm(permission)
那就这样使用吧..
{% if user|check_permission:'may_see_commerce_sell' %}
... do stuff ...
{% endif %}