在Django DTL中覆盖菜单块?

时间:2016-12-29 09:37:03

标签: python django django-templates

我有一个导航栏,有四个链接,

"categories": { "501": 99, "301": 47, "304": 5 }

class ='current'将定义当前活动页面,如

{% block navbar %}    
<div id="navbar">
  <a href="">Link 1</a>
  <a href="">Link 2</a>
  <a href="">Link 3</a>
  <a href="">Link 4</a>
</div>
{% endblock %}

我的问题是,在Django模板语言中,最好的方法是覆盖4个链接中的每一个上的块导航栏,这样每个链接都会有一个相应的类“当前”?

1 个答案:

答案 0 :(得分:0)

有很多方法可以解决这个问题,正确的方法取决于您的确切项目。话虽如此,最简单的解决方案可能是使用{% with %}标签和{{ block.super }},即:

在您的基本模板中:

{% block navbar %}    
<div id="navbar">
  <a href="" class="{% if current == "link1" %}current{% endif %}">Link 1</a>
  <a href="" class="{% if current == "link2" %}current{% endif %}">Link 2</a>
  <a href="" class="{% if current == "link3" %}current{% endif %}">Link 3</a>
  <a href="" class="{% if current == "link4" %}current{% endif %}">Link 4</a>
</div>
{% endblock %}

然后在“Link1”页面的模板中:

{% block navbar %}
  {% with current="link1" %}
    {{ block.super }}
  {% endwith %}
{% endblock %}
等等......