当前位置: 首页 > news >正文

Wagtail 扩展 HomePage 模型(一个简单的 例子)

     开箱即用。 "home" 应用在 models.py 中定义了一个空白的 HomePage 模型,同时通过迁移创建了主页并配置 Wagtail 使用该页面。

按以下方式编辑 home/models.py,为模型添加 body 字段:

from django.db import modelsfrom wagtail.models import Page
from wagtail.fields import RichTextFieldclass HomePage(Page):body = RichTextField(blank=True)content_panels = Page.content_panels + ["body"]

       body 是一个 RichTextField,这是 Wagtail 中的特殊字段类型。当设置 blank=True 时,表示该字段不是必填项,可以留空。您可以使用任何 Django 核心字段类型。content_panels 用于定义编辑界面的功能和布局,将字段添加到 content_panels 后即可在 Wagtail 管理界面中对这些字段进行编辑。您可以在 Page models 文档中相关信息。

请运行:

# Creates the migrations file.
python manage.py makemigrations# Executes the migrations and updates the database with your model changes.
python manage.py migrate

每次对模型定义进行更改后,都必须运行以下命令。终端预期输出如下:

Migrations for 'home':home/migrations/0003_homepage_body.py- Add field body to homepage
Operations to perform:Apply all migrations: admin, auth, contenttypes, home, sessions, taggit, wagtailadmin, wagtailcore, wagtaildocs, wagtailembeds, wagtailforms, wagtailimages, wagtailredirects, wagtailsearch, wagtailusers
Running migrations:Applying home.0003_homepage_body... OK

您需要更新页面模板以反映对模型所做的更改。Wagtail 使用标准的 Django 模板来渲染每种页面类型。默认情况下,它会根据应用和模型名称寻找模板文件,并将大写字母转换为下划线分隔的形式。例如,"home" 应用中的 HomePage 会对应 home/home_page.html 模板文件。该模板可以存放在 Django 模板规则识别的任何位置,按照惯例通常放置在应用的 templates 文件夹内。

请编辑 home/templates/home/home_page.html 文件,并包含以下内容:

{% extends "base.html" %}<!-- load wagtailcore_tags by adding this: -->
{% load wagtailcore_tags %}{% block body_class %}template-homepage{% endblock %}<!-- replace everything below with: -->
{% block content %}{{ page.body|richtext }}
{% endblock %}

base.html 指代父级模板。它必须始终作为模板中使用的第一个模板标签。继承此模板可以避免重复编写代码,并让应用中的所有页面共享统一的框架。通过在子模板中使用块标签(block tags),您可以覆盖父模板中的特定内容。

同时,必须在模板顶部加载 wagtailcore_tags,以便使用 Wagtail 提供的附加标签(这些标签是对 Django 原有标签的扩展)。

Wagtail 模板标签
除了 Django 的模板标签和过滤器外,Wagtail 还提供了许多自有的模板标签和过滤器。您需要在模板文件顶部通过 {% load wagtailcore_tags %} 来加载这些功能。

本教程使用 richtext 过滤器来转义并输出 RichTextField 的内容:

{% load wagtailcore_tags %}
{{ page.body|richtext }}


输出效果:

<p>Welcome to our new site!</p>


注意:每个使用 Wagtail 标签的模板都必须包含 {% load wagtailcore_tags %}。如果未加载这些标签,Django 会抛出 TemplateSyntaxError 异常。

http://www.dtcms.com/a/355900.html

相关文章:

  • 人工智能-python-深度学习-过拟合与欠拟合:概念、判断与解决方法
  • 鸿蒙Harmony-从零开始构建类似于安卓GreenDao的ORM数据库(三)
  • 详解多智能体架构:以 Open Deep Research 项目为例
  • Android中设置RecyclerView滑动到指定条目位置
  • container向harbor推送镜像报错 x509: certificate signed by unknown authority
  • redis添加超时设置
  • SONiC 之 Testbed(2)Ansible
  • Ansible 角色与 Galaxy 生态:角色复用、集合安装与系统角色配置详解
  • 半导体全自动化无人工厂应用
  • Zigbee与LoRaWAN物联网协议深度对比与技术选型指南
  • 激活函数学习
  • FIO的使用教程
  • 数据结构---链表操作技巧
  • 关于PCB面试问题
  • 01.<<基础入门:了解网络的基本概念>>
  • 大模型微调示例三之Llama-Factory_Lora
  • 机器学习和高性能计算中常用的几种浮点数精度
  • 拼团商城源码分享拼团余额提现网站定制开发源码二开
  • 二叉树高度-递归方式
  • 大模型应用开发与大模型开发有什么区别?
  • c语言动态数组扩容
  • [数据结构] 复杂度和包装类和泛型
  • 虚函数指针和虚函数表的创建时机和存放位置
  • AI记忆革命:从七秒遗忘到终身学习
  • 线程池的执行原理
  • set_property CLOCK_DEDICATED_ROUTE BACKBONE/FALSE对时钟进行约束
  • 强化学习之GRPO
  • 硬件IIC使用问题汇总
  • 错误模块路径: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
  • IMIX数据全链路解析