我有一个条件,我被击中并找到一个更好的方法来处理它。
我在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。
现在,这项工作真的是硬编码,我想改变。
答案 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>