【发布时间】:2014-06-04 05:36:17
【问题描述】:
从事我的第一个 Django 项目。模板和继承的新手。
我正在使用 Bootstrap 并想要一个引人注目的主页。所以我不想要侧边栏,只想要 Jumbotron。 但是,我的 index.html 继承自 base.html 并在除主页之外的所有其他页面中显示我想要的侧边栏。我希望其他所有内容,导航,页脚等都可以继承。
我的base.html:
{% block right_panel %}
blah blah blah
{% endblock %}
有没有办法不继承我的 index.html 中的这个块? 或者我是否使用 base.html 中的所有块减去我不想显示的块制作一个独立的 index.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">
我的页面.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,内容仍会呈现。
【问题讨论】:
标签: html django twitter-bootstrap inheritance django-templates