【问题标题】:what is {% block content %} and {% endblock content %} for in Django?Django 中的 {% block content %} 和 {% endblock content %} 是什么?
【发布时间】:2018-11-19 22:32:47
【问题描述】:

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

<header>

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

</header>

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

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

【问题讨论】:

标签: python django


【解决方案1】:

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

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

【讨论】:

    【解决方案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 中定义的内容。

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

    【讨论】:

      猜你喜欢
      • 2020-02-04
      • 2020-10-02
      • 2022-01-27
      • 2022-01-25
      • 2015-08-22
      • 2016-02-14
      • 1970-01-01
      • 2016-04-18
      相关资源
      最近更新 更多