繁体   English   中英

django 模板扩展不工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM