如何在Django模板中将URL传递给模板过滤器

时间:2014-12-23 14:18:26

标签: django templates filter

我有一个条件,我被击中并找到一个更好的方法来处理它。 我在HTML中有一个<li>。 如果某个网址已打开,我想添加class="active"

实施例

如果登录页面打开,则意味着我的request.path中有/login/ href。

为此我已经写了一个模板过滤器,我这样称呼它。

{% if request|is_open:"login" %}
    <li class="active">
        {% else %}
    <li>
{% endif %}
<a href="{% url 'login' %}">Login Here</a>
</li>

但我需要一种更清洁的方式来处理它。 我可以将{%url 'login' %}传递给模板过滤器吗?这样我就可以将那个命名的url传递给模板过滤器,它让我知道这是否是已打开的url。

现在,这项工作真的是硬编码,我想改变。

2 个答案:

答案 0 :(得分:3)

url采用可选的as子句,将结果保存在变量中:

{% url 'login' as login_url %}

然后您可以在其他地方使用。请注意,使用此语法时,值本身不会从标记输出,您需要通过{{ login_url }}明确地这样做。

答案 1 :(得分:3)

{% url 'login' as login_url %}
<li {% if request|is_active:login_url %}class="active" {% endif %}
  ...
</li>
<a href="{{ login_url }}">Login here</a>