Dj子动态模板变量在if子句中

时间:2014-07-22 11:11:46

标签: django templates variables

以下是我在“伪代码”中尝试实现的目标:

{% for page in pages %}
    {% if 'can_access_page_{{page.name}}' in perms  %}
        <li>
            <a href="{{page.url}}" id="page_link_{{page.id}}" target="_blank">{{ page.name }}</a>
        </li>
    {% endif %}
{% endfor %}

怎么做?我可以自定义权限名称 - 但仍然无法弄清楚这个。

2 个答案:

答案 0 :(得分:1)

您需要自定义过滤器。类似的东西:

@register.filter
def check_page_perms(page, perms):
    return 'can_access_page_%s' % page.name in perms

并使用它:

{% if page|check_page_perms:perms %}

答案 1 :(得分:1)

最简单的方法是略微滥用Django现有的add模板过滤器(用于数字但适用于字符串),如下所示:

https://stackoverflow.com/a/4524851/202168