这是我的base.html
<!DOCTYPE html>
<head>
<title> My Site </title>
</head>
<body>
<div id="wrapper">
<!-- HEADER START -->
{% block nav %} {% endblock %}
{% block index %} {% endblock %}
</div>
</body>
</html>
这是我的nav.html
{% extends "base.html" %}
{% block nav %}
<div id="header">
<div class="inner">
<div class="nav">
<ul>
<li class="current"><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="blog_right.html">Blog</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
<div class="clear"></div>
</div><!-- .inner end -->
</div><!-- #header end -->
<!-- HEADER END -->
{% endblock %}
这是我的index.html
{% extends "base.html" %}
{% block index %}
<p> hello </p>
{% endblock %}
之前我已经做了好几次但我对于为什么这不起作用一无所知? 网址和观看次数为here.
答案 0 :(得分:12)
一切都很好,你遇到的麻烦就是这样 你很困惑,只是在基地命名一个块不会调用它。 标记extends和include之间的区别。 你有反对意见延伸到包括。
如果你打电话说index.html,那么一旦进入你的视图,它就会被正确呈现。 您可以通过将视图中的base.html更改为index.html来实现所需的效果。
希望这会有所帮助。更多内容可以在这里阅读:https://docs.djangoproject.com/en/dev/topics/templates/#template-inheritance
答案 1 :(得分:1)
对于更多在此结束的人(就像我自己一样),需要注意的一点是,当您使用{% extends 'something.html' %}
时,您无法在顶层使用除这些模板标记之外的任何内容。
你可以在这些标签内部显示html标签(比如块标签),但不要将ANYTHING放在模板标签之外。
答案 2 :(得分:0)
如果您更改 extends 中的路径也有帮助,例如 {% extends 'mysite/index.html' %}。并且视图函数必须使用扩展来渲染文件,而不是基本的。