项目简介
Wagtail 是一款基于 Django 框架构建的开源内容管理系统(CMS),以卓越的用户体验和强大的内容建模能力著称。项目采用 Python 开发后端、JavaScript/TypeScript 构建前端管理界面,提供直观美观的后台编辑体验,支持从个人博客到大型企业级网站的各种建站需求。Wagtail 的核心特色 StreamField 组件让编辑者可以灵活组合富文本、图片、视频、嵌入内容等多种内容块,同时保持结构化的数据模型。
Wagtail 在 GitHub 上拥有超过 20k Stars,最新版本为 v7.4.1,被 NASA、Google、Mozilla、MIT、BMW、美国红十字会、英国 NHS 等知名机构采用,是 Python 生态中最受推崇的 CMS 建站方案。
核心功能
- StreamField 内容建模:通过可复用的内容块(StreamField)灵活组合页面结构,支持富文本、图片、视频、嵌入代码、自定义组件等
- 直观的后台界面:现代化、响应式的管理后台,编辑体验流畅友好,非技术人员也能轻松上手
- 页面树结构管理:可视化的页面层级树,支持拖拽排序、批量操作、页面复制和移动
- 多站点管理:单个 Wagtail 实例可管理多个网站,每个站点拥有独立的页面树和配置
- 多语言支持:内置国际化(i18n)框架,支持多语言内容创建和翻译工作流
- Headless API:提供 Content API,支持前后端分离架构,可用 Next.js、Nuxt 等框架渲染前端
- 强大的搜索功能:集成 Elasticsearch 或 PostgreSQL 全文搜索,支持按内容类型、标签、日期等维度检索
- 图片与文档管理:内置媒体库,支持图片裁剪、焦点区域设置、批量上传、收藏夹分类
- 工作流与审核:支持内容草稿、审核流程、定时发布、版本对比和回滚
- 权限精细控制:基于用户组和角色的权限系统,可精确控制页面级别的编辑、发布权限
- 表单构建器:可视化创建联系表单、调查问卷等,自动收集和导出提交数据
- 前端设计完全自由:不限制前端模板和样式,开发者可完全自定义页面外观
- 高性能扩展:可从树莓派到多数据中心云平台部署,支持缓存优化,轻松处理百万级页面
- Django 生态无缝集成:可利用 Django 海量第三方库和中间件,扩展功能无上限
- SEO 友好:自动生成 sitemap、支持自定义 URL 结构、meta 标签管理、重定向管理
仓库信息
- GitHub 地址:https://github.com/wagtail/wagtail
- 官方网站:https://wagtail.org/
- 官方文档:https://docs.wagtail.org/
- 案例展示:https://madewithwagtail.org/
- 开发语言:Python / JavaScript / TypeScript / Jinja
- 开源协议:BSD-3-Clause
- Stars 数量:20k+
安装方式
方式一:pip 快速安装(推荐新手)
# 创建虚拟环境
python -m venv mysite
source mysite/bin/activate
# 安装 Wagtail
pip install wagtail
# 创建新项目
wagtail start mysite
cd mysite
# 安装依赖
pip install -r requirements.txt
# 初始化数据库
python manage.py migrate
# 创建管理员账户
python manage.py createsuperuser
# 启动开发服务器
python manage.py runserver
# 访问 http://127.0.0.1:8000/admin
方式二:Docker 部署
# 使用官方 Docker 镜像
docker run -d --name wagtail \
-p 8000:8000 \
-v /path/to/project:/app \
wagtail/wagtail:latest
Docker Compose 配置:
version: '3.8'
services:
db:
image: postgres:16
environment:
POSTGRES_DB: wagtail
POSTGRES_USER: wagtail
POSTGRES_PASSWORD: wagtail_password
volumes:
- ./postgres_data:/var/lib/postgresql/data
wagtail:
image: wagtail/wagtail:latest
ports:
- "8000:8000"
volumes:
- ./app:/app
environment:
- DATABASE_URL=postgres://wagtail:wagtail_password@db:5432/wagtail
depends_on:
- db
方式三:Bakery 模板项目(快速建站)
# 使用预配置的 Bakery 模板快速搭建网站
pip install wagtail
wagtail start bakery mysite
cd mysite
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
方式四:集成到现有 Django 项目
# 在已有 Django 项目中添加 Wagtail
pip install wagtail
# 在 settings.py 的 INSTALLED_APPS 中添加
INSTALLED_APPS = [
'wagtail',
'wagtail.admin',
'wagtail.documents',
'wagtail.images',
'wagtail.sites',
'modelcluster',
'taggit',
# ... 其他应用
]
# 在 urls.py 中添加 Wagtail 路由
from django.urls import path, include
urlpatterns = [
path('cms/', include('wagtail.admin.urls')),
]
使用场景
- 企业官网建设:NASA、Google、BMW 等大型机构的选择,适合需要精细内容管理的官方网站
- 新闻媒体网站:支持复杂的文章排版、多媒体嵌入、定时发布工作流
- 政府机构门户:满足无障碍访问(WCAG)要求,支持多语言内容管理
- 教育机构网站:MIT 等高校采用,适合课程展示、研究发布、校园资讯
- 非营利组织网站:Mozilla、红十字会等采用,适合公益项目展示和捐赠管理
- Headless 内容中台:通过 Content API 为移动端 App、小程序提供内容服务
- 个人博客/作品集:轻量部署,完全自定义前端设计
与同类 CMS 对比
| 特性 | Wagtail | WordPress | Strapi | Ghost |
|---|---|---|---|---|
| 开发语言 | Python/Django | PHP | Node.js | Node.js |
| 开源协议 | BSD-3-Clause | GPL | MIT | MIT |
| 内容建模 | StreamField 极强 | 灵活但松散 | 动态 API 极强 | 专注博客 |
| 后台体验 | 现代化美观 | 传统风格 | 现代化 | 现代化简洁 |
| 扩展性 | Django 生态 | 插件市场 | 插件系统 | 有限 |
| Headless | 原生支持 | 需插件 | 原生支持 | 部分支持 |
| 安全性 | 高(Django) | 易被攻击 | 中等 | 中等 |
| 多站点 | 原生支持 | 需插件 | 需插件 | 不支持 |
| 企业用户 | NASA/Google | 广泛 | 增长中 | 媒体行业 |
| 学习曲线 | 中等(需 Django) | 低 | 低 | 低 |