它是一款开放源代码的网页发布软件,采用某个流行架构搭建而成。该系统主要面向程序员、美工人员及文章创作者,旨在给予用户一个便捷且高效的渠道,用以设计和维护网络资讯。凭借其易用的修改工具和卓越的模块化能力,它常被用于公司级信息发布,且不会强制用户使用固定的版式或布局。它能够满足从个人简易网页到大型商业门户的各种用途,已被众多知名机构选用,例如 NASA、NHS(英国国家医疗服务体系)、Oxfam 以及 MIT。
历史背景
这个系统是英国数字机构在 2011 年制作的,原本是作为某个内容管理系统的附加功能。它最开始是为了满足内部管理资料的需求而设计的,后来因为开源群体的参与,很快变成一个完善的内容管理系统。到 2025 年,它已经更新到 7.x 版本,并且有一个活跃的社群在维护,每月会发布资讯,也提供专业层面的服务。它的构思理念注重为编辑人员提供便利,也为开发者保留充分自主权,从而排除了常规内容管理系统所存在的繁复操作和限制性弊端。

关键特性
它的突出特点在于兼顾了创作者的自主权与建设者的可变通性。具体表现为:
特性
描述
一种新颖的排版工具,让内容制作者能够随意搭配文字、图片、影片等元素模块,无需技术人员的介入操作。它非常适用于个人网站或资讯发布平台。
开发者灵活性
依托 ,兼容 的所有特性。通过少量指令就能扩充新的资料格式。
前端自由
设有基础版式框架,创作者能够精细调整外观,兼容分离式架构。
无锁定费用
开源免费,无许可费;全球专业机构(如 )提供支持。
编辑器控制
简洁明了的后台操作面板,能够进行内容丰富文本处理,管理视觉素材,处理数据录入,执行信息检索,从而增强工作效率。
多站点支持
轻松管理多个网站,如 的多站点设置。
架构概述
其构造基于某个基础,采用 MVT(模型-视图-控制器)体系。中心是页面模型,它承袭了某种模型机制,能够形成层级化的树状布局。它融合了该体系的附加功能,比如用于内容管理系统的接口,以及基于特定技术或另一种技术的搜索组件。与其它内容管理系统有所区别,它着重体现“内容即代码”的理念,让程序员借助类来设定内容构造,而不是依赖预设的表单。

用例核心概念
的设计围绕几个关键概念,确保内容管理和扩展的简易性:

安装
这个装置的设置非常方便,只需要配置相应条件。接下来是详细步骤说明(以 3.9+版本为例)。
先决条件步骤创建并激活虚拟环境:
(cmd):
启动虚拟环境,路径为mysite下的env文件夹,并激活该环境中的脚本
macOS/Linux (bash):
启动虚拟环境,路径为mysite/env,并激活该环境,具体命令为source mysite/env/bin/activate
(激活后,命令行显示 (env))。
安装 :
pip install wagtail
生成新项目:
wagtail start mysite
这将生成一个目录,里面具备初始布局,例如 home 子目录、根目录、以及 .py 和 .txt 文件。
安装项目依赖:
切换到mysite目录,然后安装requirements.txt文件中列出的所有依赖项
创建数据库(默认 ):
python manage.py migrate
创建超级用户(admin 账户):
启动命令行工具,输入指令创建系统管理员账号
跟随提示输入用户名、邮箱和密码。
启动服务器:
python manage.py runserver
进入8000端口,浏览首页界面,前往8000/admin端口,以管理员身份登录。
常规疑问:倘若 出现无法辨认状况,需将 或 接入路径环境变量中。另外:可选择装置 以优化检索效率。
入门上手:构建你的第一个 站点
根据官方教程的入门手册,我们开始逐步打造一个基础网站,该网站将包含主页面和博客功能,前提是系统已经安装完毕。
首先启动初始站点程序,其次对模型进行拓展,具体方法为增设内容字段
编辑 home/.py:
from django.db import models
在wagtail的模型中,有一个名为Page的类型
在wagtail.fields模块中,有一个名为RichTextField的字段类型
在wagtail的admin面板中导入FieldPanel
class HomePage(Page):
body为可选的富文本字段,允许留空
内容面板列表等于页面内容面板列表加上一个新项
设置 body 面板,将其加入管理界面,使用 FieldPanel 函数调用
]
启动命令行环境,执行管理脚本,创建数据库迁移文件,使用指定命令行工具,完成迁移准备工作
python manage.py migrate
{% extends "base.html" %}
{% load wagtailcore_tags %}
{% block content %}
{{ page.title }}
{{ page.body|richtext }}
{% endblock %}
重启服务器,刷新首页查看变化。
步骤 3: 创建基本博客
启动名为blog的新应用程序,通过执行命令行指令python manage.py startapp。
INSTALLED_APPS = [
'blog', # 新添加
'home',
'search',
# ... 其他
]
from django.db import models
from wagtail.models import Page
from wagtail.fields import RichTextField
from wagtail.admin.panels import FieldPanel
class BlogPage(Page):
intro = RichTextField()
将混合内容通过 StreamField 进行添加,其中 body 是一个字段类型
段落类型,采用丰富文本字段格式,
图片字段,与模型的外键关联,指向Image模型,当删除时级联删除,逗号
])
content_panels = Page.content_panels + [
FieldPanel('intro'),
FieldPanel('body'),
]
执行管理命令,创建博客应用的迁移文件
python manage.py migrate
class BlogIndexPage(Page):
intro为富文本字段类型,允许为空值
content_panels = Page.content_panels + [
FieldPanel('intro'),
]
此函数用于获取请求信息,通过参数接收请求对象,然后返回相关上下文数据
上下文 = 父类方法获取的请求上下文信息
context里的posts赋值为BlogPage对象中属于自己的子对象,并且是激活状态
return context
模板
blog//blog/.html:
{% extends "base.html" %}
{% load wagtailcore_tags %}
{% for post in posts %}
{{ post.title }}
{{ post.intro|richtext }}
{% endfor %}
步骤 4: 添加媒体和搜索步骤 5: 部署基础提示
借助这些方法,能迅速掌握要领,建议先从基础界面入手,再慢慢融入其他组件和接口调用。
扫一扫在手机端查看
-
Tags : Django Python ElasticSearch Linux Windows 设计 Pages Bash PostgreSQL 设计师 UC浏览器 Google 新闻 乐施会 加州大学伯克利分校 英国 国创上头条 Mozilla 博物馆
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1