[英]django template extends not working
这是我的基地.html
<!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 %}
这是我的 index.html
{% extends "base.html" %}
{% block index %}
<p> hello </p>
{% endblock %}
我以前做过几次,但我不知道为什么这不起作用? 网址和视图在这里。
好吧,一切都很好,你遇到的麻烦是你很困惑,只是在 base 中命名一个块并没有调用它。 标记扩展和包含之间的区别。 你已经混淆了扩展到包含。
一旦进入你的视图,如果你调用 say index.html 它将被正确呈现。 将view中的base.html改成index.html就可以达到你想要的效果。
希望这可以帮助。 更多内容可以在这里阅读: https : //docs.djangoproject.com/en/dev/topics/templates/#template-inheritance
对于最终来到这里的更多人(如我自己),主要要注意的是,当您使用{% extends 'something.html' %}
,除了这些模板标签之外,您不能在顶层使用任何其他标签。
您显然可以在这些标签内放置 html 标签(如块标签),但不要在模板标签外放置任何东西。
如果您更改 extends 中的路径也有帮助,例如 {% extends 'mysite/index.html' %}。 并且视图函数必须用扩展来渲染文件,而不是基本的。
在views.py中,您必须调用扩展另一个模板的模板,而不是相反。 在您的示例中,您应该调用 nav.html。
尝试这样做
{% extends 'appname/index.html' %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.