2013-02-14 76 views
1

我有一个base.html文件看起来像这样:如何链{%包含%} Django的模板

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
<html lang="en"> 
<head> 

{% block header %}{% endblock %} 

</head> 
<body> 

{% block content %}{% endblock %} 

{% block footer %}{% endblock %} 
</body> 
</html> 

,我有一个文件,auth.html扩展这样的:

{% extends "base.html" %} 

{% block content %} 

[MY CONTENT] 

{% endblock %} 

这工作正常,但我也想有一个单独的header.html文件,插入上面的header块。

什么是正确的方式来构造auth.htmlheader.html为了包括并且都有扩展base.html

我尝试添加一个{% include header.html %}线auth.html,和构建header.html如下:

{% extends "base.html" %} 

{% block header %} 

[HEADER CONTENT HERE] 

{% endblock %} 

,但没有奏效。我应该怎么做?

回答

2

您需要{{ block.super }}

如果您需要从父模板获得该块的内容, 的{{block.super}}变量会做的伎俩。如果您想要将 添加到父块的内容而非完全覆盖它的 ,这很有用。

它埋在template inheritance文档中。


假设你想额外的东西添加到headerauth.htmlheaderindex.html定义:

auth.html会是什么样子:

{% extends "index.html" %} 

{% block header %} 
{{ block.super }} 
Your extra stuff, which will come after whatever was in the header block 
{% endblock %} 
+0

遗憾,在这种情况下,我认为是要指向'auth.html' - 我将如何构建相应的'AUTH。 html'和'header.html'文件来利用'{{block.super}}'? – fox 2013-02-14 05:52:27

+0

对不起,在这种情况下,我有两个文件,'auth.html'和'header.html' - 如何让它们都扩展'base.html'? – fox 2013-02-15 05:17:06