在Django模板中使用内容块

时间:2016-05-27 01:23:29

标签: django

我在尝试制作一个通用模板然后扩展到子模板时遇到了问题。

Post.html

{% extends "blog\blog_base.html" %}
{% block title %} The Blog {% endblock %}

{% block menu %}
{% endblock %}

<h1>The Blogs Index Page</h1>

{% block content %}
  <h2> Posts </h2>
   {% for post in latest_post_list %}
     <h3> {{ post.title }} </h3>
      <p> {{ post.body|linebreaks }} </p>
   {% endfor %}
{% endblock %}

blog_base.html

<body>
{% block menu %} 
{% for menu in menu %}
    {{ menu.page_name }}
{% endfor %}
{% endblock %}
  <div class = "content">
   {% block content %} <p> Place Holder </p> {% endblock %}
  </div>
</body>

内容块有效。

菜单的块没有,它不显示page_name对象的menu属性。

但如果我插入 - &gt;

{% for menu in menu %}
    {{ menu.page_name }}
{% endfor %}

直接进入Post.html模板,它有效。哦,它也自动使菜单成为一个列表,这让我感到困惑。为什么它会生成带有子弹点的列表,而不仅仅打印出自己的每个菜单对象?

1 个答案:

答案 0 :(得分:1)

通过在 Post.html 中添加块标记,您可以覆盖基本模板中的菜单。从帖子模板中删除以下内容:

{% block menu %}
{% endblock %}
相关问题