将其他应用扩展到我的模板工作

时间:2014-01-27 13:58:30

标签: django

我想将另一个模板扩展到我的blog.html,无论我是否尝试扩展它,它都不起作用。 博客/ index.html中

{% block nav %}
    <ul id="nav">
        <li>{% block nav-blog %}<a href="/blog/">Blog</a>{% endblock %}</li>
        <li>{% block nav-photo %}<a href="/photo/">Photo</a>{% endblock %}</li>
    </ul>
{% endblock %}
<div class="news">
    {% block polls %}   
        {% extends 'polls/index.html' %}
    {% endblock %}
<div>

轮询/ index.html中

{% if latest_poll_list %}
    <ul>
        {% for poll in latest_poll_list %}
            <li><a href="{% url 'polls:detail' poll.id %}">{{ poll.question }}</a></li>
        {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

2 个答案:

答案 0 :(得分:0)

通常,扩展必须停留在模板的顶部而不是模板中的某个位置。 在模板中,您可以使用在基本模板中设置的标记。

答案 1 :(得分:0)

你需要确保在这里做两件事:

  1. 在index.html中声明“nav”块。这将让django知道你希望在模板extends时覆盖的索引html部分。您放入索引html中“nav”块内的任何内容都将被视为默认内容。
  2. 您需要在blog.html的开头使用“扩展”模板标记,以便django知道您要扩展的模板。
  3. 像这样:

    index.html

    {% block nav %}
      <div>
         Some default html here..
      </div>
    {% endblock %}
    

    然后blog.html

    {% extends index.html %}    
    {% block nav %}
      <div>
         This is what will render
      </div>
    {% endblock %}
    

    此外,在尝试扩展它以验证django是否找到该模板之前,您将要测试index.html。如果不是,则需要将找到的目录添加到TEMPLATE_DIRS文件中的settings.py数组中。