【发布时间】:2020-05-12 19:22:35
【问题描述】:
Wagtail 使用一个欢迎模板开始新项目。但是,此模板不继承自任何父模板,例如 base.html。在我们的项目中,我们之前定义了一个 base.html 包含全局 HTML 标签和 CSS/JavaScript 包含。
我们如何告诉默认 Wagtail 页面模型显示在扩展 base.html 的模板中?
【问题讨论】:
Wagtail 使用一个欢迎模板开始新项目。但是,此模板不继承自任何父模板,例如 base.html。在我们的项目中,我们之前定义了一个 base.html 包含全局 HTML 标签和 CSS/JavaScript 包含。
我们如何告诉默认 Wagtail 页面模型显示在扩展 base.html 的模板中?
【问题讨论】:
澄清一下,有两种可能的设置,具体取决于您创建项目的方式:
wagtail start myproject 从头开始一个新项目,则初始迁移(部分存在于 Wagtail 本身中,部分存在于项目模板中)将为您设置一个 HomePage 模型和初始主页。此页面类型的模板位于 home/templates/home_page.html,并且已设置为从基本模板(位于 myproject/templates/base.html)继承。wagtailcore.Page 类型的初始页面。您并不真正希望直接使用此页面类型(尤其是因为它没有超出标题的字段,也无法添加新的字段) - 之所以这样做,是因为还没有设置“正确的”页面模型,并且需要有 something 作为页面树的初始状态。这个想法是,一旦您在应用中设置了至少一个页面模型,您就可以创建您的真实主页,将站点记录指向它(在设置 -> 站点中),然后删除初始存根。尽管如此,如果您真的想为wagtailcore.Page 提供一个带有基本模板的完整模板,您可以在您的项目应用程序中的一个路径templates/wagtailcore/page.html 中创建一个模板文件。只要有问题的应用在 INSTALLED_APPS 列表中高于'wagtail.core',这将覆盖 Wagtail 提供的准系统模板。
【讨论】:
{% extends "base.html" %}
将它添加到您的模板中,它将扩展基础中的任何内容。
如果您的基本模板中包含块,则使用相同的语法
{% block content %}
This will appear wherever you have this same block in the base.html template
{% endblock %}
Wagtail 建立在 Django 之上,您可以在此处阅读有关其模板语言的更多信息:https://docs.djangoproject.com/en/3.0/ref/templates/language/
【讨论】: