django模板扩展不起作用

时间:2011-12-31 14:12:50

标签: django django-templates django-views django-urls

这是我的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.

3 个答案:

答案 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' %}。并且视图函数必须使用扩展来渲染文件,而不是基本的。