这是我的博客
<!DOCTYPE html>
<head>
<title> My Site </title>
</head>
<body>
<div id="wrapper">
<!-- HEADER START -->
{% block nav %} {% endblock %}
{% block index %} {% endblock %}
</div>
</body>
</html>
这是我的导航. 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 %}
这是我的网站
{% extends "base.html" %}
{% block index %}
<p> hello </p>
{% endblock %}
我以前做过几次,但我不知道为什么这不起作用?url和视图是here.
4条答案
按热度按时间vawmfj5a1#
一切都很好,麻烦的是你搞混了,仅仅在base中命名一个块并不能调用它,标记extends和include的区别,你混淆了extends和include。
一旦你在视图中调用了index.html,它就会被正确地呈现,你想要的效果可以通过把视图中的base.html改为index.html来达到。
希望这能有所帮助。更多内容可以在这里阅读:https://docs.djangoproject.com/en/dev/topics/templates/#template-inheritance
mv1qrgav2#
对于大多数最终使用
{% extends 'something.html' %}
的人(比如我自己),需要注意的是,当您使用{% extends 'something.html' %}
时,除了顶层的这些模板标记之外,您不能使用任何其他标记。很明显,你可以在这些标签里面放html标签(比如block标签),但是不要在模板标签外面放任何东西。
o0lyfsai3#
如果你改变扩展路径,例如
{% extends 'mysite/index.html' %}
,也会有帮助。视图函数必须用扩展来呈现文件,而不是基本的。6ie5vjzr4#
在 * views.py * 中,你必须调用一个模板来扩展另一个模板,而不是相反,在你的例子中,你应该调用nav.html。