Wagtail/Django 形式的模板标签的目的和使用 {% block body_class %}template-homepage{% endblock %}

Purpose and use of Wagtail/Django template tags of the form {% block body_class %}template-homepage{% endblock %}

在 Wagtail 文档 (Your first Wagtail site) 中,我们被告知要创建一个 homepage.html 模板,如下所示:

{% extends "base.html" %}

{% load wagtailcore_tags %}

{% block body_class %}template-homepage{% endblock %}

{% block content %}
    {{ page.body|richtext }}
{% endblock %}

在上面的代码中,标签 {% block body_class %}template-homepage{% endblock %} 应该做什么?我在教程的文本中找不到任何提及。

教程继续指导我们创建另外两个模板,blog_index_page 和 blog_page 模板,这两个模板都包含 {% block body_class %} 标签。同样,我在文档中找不到所有这些行的提及,更不用说对它们的解释了 used/modified.

在文档中搜索“body_class”只找到刚才提到的三个代码块,还有一个提到:在 1.2 版发行说明中,在“新功能 - 次要功能”下的符号: “在默认主页模板中简化了 body_class。”

关于我应该如何处理这些标签的任何见解?这些教程模板中的标签中包含的文本(例如上面代码中的“模板主页”)有什么特殊含义或功能(如果有)?

base.html 中你有一个看起来像 <body class="{% block body_class %}{% endblock %}"> 的部分。您在模板中添加到该块中的内容将呈现到该部分中。

例如,假设在您的设计中您的 <body> 包含底部边距,但是在特定模板上您不希望那里有边距并创建 css class .remove-margin { margin-bottom: 0 };

然后您可以将 {% block body_class %}remove-margin{% endblock %} 添加到您的模板中,它会将 class 应用到 <body> 标记,而无需修改该模板的 base.html 模板用例。

您也可以创建自己的。在 base.html 中添加一个自定义块,例如 {% block my_custom_block %}{% endblock %},然后在您的模板中包含一些文本或 html 在 my_custom_block 中,它会在您放置该部分的任何地方呈现在基本模板中。

为了帮助用图片澄清上面的正确答案,因为我也想知道那个块标签在做什么,这是呈现的 html。根据上面的回答,这是标准的 Django。

在 base.html 你有这一行:

<body class="{% block body_class %}{% endblock %}">

替换发生在 home_page.html 模板中:

{% block body_class %}template-homepage{% endblock %}

它呈现如下截图:

 <body class="template-homepage">