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

Foz*_*oro 8 python django

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

<header>

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

</header>

{% block content %}
{% endblock content %}
Run Code Online (Sandbox Code Playgroud)

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

mar*_*er_ 17

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

您可以创建模板的层次结构,因此从base.html上面可能会开始;

<body>
    {% block content %}
    {% endblock content %}
</body>
Run Code Online (Sandbox Code Playgroud)

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

{% extends "base.html" %}

{% block content %}
    <h1>Welcome</h1>
    <p>This is the home page</p>
{% endblock content %}
Run Code Online (Sandbox Code Playgroud)

然后你会引用home.html在Django和它会包括来自标记base.py与所限定的含量home.html

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


Cup*_*ava 9

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

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

Django Docs的示例中

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

<head>
    <link rel="stylesheet" href="style.css">
    <title>{% block title %}My amazing site{% endblock %}</title>
</head>
Run Code Online (Sandbox Code Playgroud)

覆盖子模板

{% extends "base.html" %}

{% block title %}My amazing blog{% endblock %}
Run Code Online (Sandbox Code Playgroud)

儿童会覆盖“我的奇妙网站”,然后显示“我的奇妙博客”