如何在django模板中链接{%includes%}

时间:2013-02-14 05:32:07

标签: python html django

我有一个base.html文件,如下所示:

<!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 %}

但这不起作用。我该怎么做?

1 个答案:

答案 0 :(得分:2)

您需要{{ block.super }}

  

如果您需要从父模板获取块的内容,   {{block.super}}变量可以解决这个问题。如果,这很有用   您想要添加到父块的内容而不是   完全压倒它。

它隐藏在template inheritance文档中。


假设您要在header中的auth.html块中添加额外的内容。 header中定义了index.html

您的auth.html看起来像是:

{% extends "index.html" %}

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