Django 中的 {% block content %} 和 {% endblock content %} 是什么?

新手上路,请多包涵

所以我刚开始阅读一本关于 Django 的书(适合初学者),我发现了以下代码片段:

 <header>

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

</header>

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

谁能向我解释 {% block content %}{% endblock content %} 的用途是什么?非常感谢您!

原文由 Nazim Kerimbekov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

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

“My amazing site”将被孩子覆盖,然后显示“My amazing blog”

原文由 Cup of Java 发布,翻译遵循 CC BY-SA 4.0 许可协议

从某种意义上说,这就是模板的强大之处。

您可以创建模板层次结构,因此从 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

这是基础知识,但如果您使用块将一些模板放在一起,您就会选择它。

原文由 markwalker_ 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏