【问题标题】:django template extends not workingdjango模板扩展不起作用
【发布时间】:2012-01-31 02:15:10
【问题描述】:

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

【问题讨论】:

  • 有什么问题? “它不起作用”不是很有帮助。

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


【解决方案1】:

好吧,一切都很好,你遇到的麻烦是 你很困惑,只是在 base 中命名一个块并不会调用它。 标记扩展和包含之间的区别。 你已经混淆了延伸到包括。

一旦在你的视图中,如果你调用说 index.html 它将被正确呈现。 将视图中的base.html改为index.html即可达到你想要的效果。

希望这会有所帮助。更多内容可以在这里阅读:https://docs.djangoproject.com/en/dev/topics/templates/#template-inheritance

【讨论】:

  • 谢谢,它真的很有帮助。是的,我会记住的......我很傻:(
  • Anno 2019 你的答案还在继续!添加到您非常清楚的解释中:如果您在页面上使用 {% block something %} {% endblock something %},您应该在 views.py 中引用此页面。相反,您必须引用包含您要在该块中显示的代码的页面。
【解决方案2】:

对于更多来到这里的人(比如我自己),主要需要注意的是,当您使用{% extends 'something.html' %} 时,除了顶层的这些模板标签之外,您不能使用任何其他内容。

您显然可以在这些标签中包含 html 标签(如块标签),但不要将任何东西放在模板标签之外。

【讨论】:

    【解决方案3】:

    如果您更改扩展中的路径也有帮助,例如 {% extends 'mysite/index.html' %}。并且视图函数必须使用扩展来渲染文件,而不是基本的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 2022-11-18
      • 2018-06-03
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      相关资源
      最近更新 更多