根据非权限标准显示和隐藏django中的菜单项?

问题描述 投票:0回答:1

我在Company上有一个叫做leave_approvers的场地,这是ManyToManyFieldUsers

leave_approvers可以批准他们作为休假批准人的公司中的其他用户的许可。他们还会在请假时收到电子邮件。

我现在想根据用户是否是Approve Leave在主布局中显示或隐藏leave_approver选项卡。

  1. 我决定让leave_approver领域有缺陷,因为我应该使用内置授权或类似django-guardian。请注意,我正在向leave_approvers发送电子邮件,这意味着
  2. 我可以在base.html中查询是否用户是leave_approver。如何做到这一点肯定会有性能影响?
python django
1个回答
0
投票

在考虑使用django权限(通过上下文处理器自动添加到上下文中)后,我认为是最好的路径。在模板中使用这样的东西:

{% if perms.foo.can_vote %}

但是,在我的情况下,我偷工减料并查询基本模板中的所有休假批准者,这比上下文中的预建perms要慢得多。

{% if user in user.company.leave_approvers.all %}
    <li role="separator" class="divider"></li>
    <li><a href="{% url 'leave:pending' %}">Pending Leave Approval</a></li>
{% endif %}
© www.soinside.com 2019 - 2024. All rights reserved.