在Django中,{% block content %}和{% endblock content %}是用来做什么的?

drnojrws  于 2023-03-20  发布在  Go
关注(0)|答案(4)|浏览(251)

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

<header>

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

</header>

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

有没有人能给我解释一下{% block content %}{% endblock content %}的用途?提前感谢你们!

5w9g7ksd

5w9g7ksd1#

block用于覆盖模板的特定部分。
在您的示例中,您有一个名为content的块,并且该块应该被从该模板继承的子块覆盖。
从Django文档的例子中
要扩展的模板,名称为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 %}

“我的惊人的网站”将被孩子覆盖,然后显示“我的惊人的博客”

yduiuuwa

yduiuuwa2#

从某种意义上说,这就是模板的力量来源。
你可以创建一个模板的层次结构,所以从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中定义的内容。
这是最基本的,但是如果你用积木把一些模板放在一起,你会学会的。

k97glaaz

k97glaaz3#

例如,您有来自2个文件的代码摘录:
base.html:

<body bgcolor="cyan">

    {% block content %}

    {% endblock %}
    
</body>

home.html:

{% extends 'base.html' %}

{% block content %}
<h1>Hello World from Abhishek</h1>

{% endblock %}

home.html中,base.html的属性将被扩展,但是通过使用{% block content %}{% endblock %},您将能够在base.html的属性上覆盖home.html的代码块
这是一个动态网站的模板。

nkcskrwz

nkcskrwz4#

这只是django的模板继承,它基本上意味着另一个html文件的内容块已经被导入到你当前使用的html文件中。

相关问题