Django的模板继承:如何不显示从父级块?
在我的第一个Django项目上工作。 新的模板和继承。
我正在使用Bootstrap,想要一个闪闪发光的主页。 所以我不想要侧边栏,只是Jumbotron。 但是,我的index.html继承自base.html,并在我的主页上显示我希望在其他所有页面中使用的边栏。 我想要一切,导航,页脚等继承。
我的base.html:
{% block right_panel %}
blah blah blah
{% endblock %}
有没有办法在我的index.html中不继承这个块? 或者我制作了一个独立的index.html模板,其中包含base.html中的所有块减去那些我不想显示的块?
什么是最佳做法?
编辑
以下是base.html中的问题:
<div class="col-md-3 right">
{% nevercache %}
{% include "includes/user_panel.html" %}
{% endnevercache %}
<div class="panel panel-default">
<div class="panel-body">
{% block right_panel %}
{% ifinstalled mezzanine.twitter %}
{% include "twitter/tweets.html" %}
{% endifinstalled %}
{% endblock %}
</div>
</div>
</div>
CSS正在渲染: <div class="panel-body">
我的page.html:
{% extends "base.html" %}
<!-- no right-panel content-->
{% block right_panel %}{% endblock %}
{% load mezzanine_tags keyword_tags %}
{% block meta_title %}{{ page.meta_title }}{% endblock %}
{% block meta_keywords %}{% metablock %}
{% keywords_for page as keywords %}
{% for keyword in keywords %}
{% if not forloop.first %}, {% endif %}
{{ keyword }}
{% endfor %}
{% endmetablock %}{% endblock %}
{% block meta_description %}{% metablock %}
{{ page.description }}
{% endmetablock %}{% endblock %}
{% block title %}
{% editable page.title %}{{ page.title }}{% endeditable %}
{% endblock %}
{% block main %}
{% endblock %}
当我添加:
`{% block right_panel %}{% endblock %}
到page.html的顶部,内容不会呈现。
什么是最好的方法? 我是否应该创建一个新块并将其包装在正在创建的样式中,然后将其留在其他模板中为空? 或者,我应该将有问题的块从base.html移动到另一个模板文件,并将其包含在我希望呈现的页面中。
另外,还有一件事。 如果我从page.html中移除{% block right_panel %}{% endblock %}
,并将其放入从page.html继承的gallery.html中,则内容仍呈现。
只需在index.html中声明该块为空块,以便从base.html中“静音”内容:
即在index.html中:
...
{% block right_panel %}{% endblock %}
...
为了清楚起见,如果您在base.html
阻止了一些代码:
{% block right_panel %}
<div class="footerlinks">
<ul>
<li><a href="#">about us</a></li>
<li><a href="#">contact us</a></li>
<li><a href="#">help</a></li>
</ul>
</div>
{% endblock %}
它将显示在扩展base.html
所有模板中,除非块被覆盖,从而替换块。
从而,
{% block right_panel %}{% endblock %}
将有效地静音该部分。 这取决于您如何在您的模板中构建替代品,以便将所有内容保存在一个位置。
如果您的努力正在您的网页上移动,可能会明智地阻止该部分的可见部分:
<div class="footerlinks">
{% block right_panel %}
<ul>
<li><a href="#">about us</a></li>
<li><a href="#">contact us</a></li>
<li><a href="#">help</a></li>
</ul>
{% endblock %}
</div>
链接地址: http://www.djcxy.com/p/90133.html
上一篇: django template inheritance: how to NOT display block from parent?