Jar*_*sen 7 html django inheritance django-templates twitter-bootstrap
在我的第一个Django项目上工作.模板和继承的新手.
我正在使用Bootstrap并想要一个引人注目的主页.所以我不想要侧边栏,只需要Jumbotron.但是,我的index.html继承自base.html,并在我的主页上显示我想要的每个其他页面的侧边栏.我想要其他一切,导航,页脚等继承.
我的base.html:
{% block right_panel %}
blah blah blah
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
有没有办法在我的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>
Run Code Online (Sandbox Code Playgroud)
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 %}
Run Code Online (Sandbox Code Playgroud)
当我添加:
`{% block right_panel %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)
在page.html的顶部,内容不呈现.
什么是最好的方法?我应该创建一个新块并将其包裹在正在设置的样式周围,然后将其留在其他模板中吗?或者我应该将有问题的块从base.html移动到另一个模板文件并将其包含在我想要它呈现的页面上.
还有,另一件事.如果我{% block right_panel %}{% endblock %}从page.html中删除并将其放在从page.html继承的gallery.html中,则内容仍会呈现.
只需在index.html中将块声明为空块,即可"静音"base.html中的内容:
即,在index.html中:
...
{% block right_panel %}{% endblock %}
...
Run Code Online (Sandbox Code Playgroud)
为清楚起见,如果您阻止某些代码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 %}
Run Code Online (Sandbox Code Playgroud)
它将出现在所有扩展的模板中base.html,除非块被覆盖,从而替换块。
因此,
{% block right_panel %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)
将有效地静音该部分。然后由您在模板中构建一个替代品,将所有内容保存在一个地方。
如果您正在努力在您的页面上移动内容,那么只屏蔽该部分的可见部分可能是明智的:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5012 次 |
| 最近记录: |