在Django中,{%block content%}和{%endblock content%}分别代表什么?

时间:2018-11-19 22:32:47

标签: python django

所以我刚开始读一本关于Django的书(面向初学者),我遇到了以下代码片段:

<header>

<a href="{% url 'home' %}">Home</a> | <a href="{% url 'about' %}">About</a>

</header>

{% block content %}
{% endblock content %}

有人可以向我解释{% block content %}{% endblock content %}的用途吗?提前非常感谢您!

2 个答案:

答案 0 :(得分:5)

block用于覆盖模板的特定部分。

在您的情况下,您有一个名为content的块,应该由继承自此模板的子项覆盖。

来自The Django Docs

的示例

要扩展的模板,名为base.html

<head>
    <link rel="stylesheet" href="style.css">
    <title>{% block title %}My amazing site{% endblock %}</title>
</head>

覆盖子模板

{% extends "base.html" %}

{% block title %}My amazing blog{% endblock %}

孩子会覆盖“我的奇妙站点”,然后显示“我的奇妙博客”

答案 1 :(得分:2)

从某种意义上来说,这就是模板的力量所在。

您可以创建模板的层次结构,因此可以从base.html开始,就像上面的内容一样。

<body>
    {% block content %}
    {% endblock content %}
</body>

然后,您可以创建任何其他模板,例如home.html,并执行类似的操作;

{% extends "base.html" %}

{% block content %}
    <h1>Welcome</h1>
    <p>This is the home page</p>
{% endblock content %}

然后您将在django中引用home.html,并将其中包含来自base.py的标记以及在home.html中定义的内容。

这是基础,但是如果您使用块将一些模板放在一起,则会将其拾起。