Wagtail、django CMS、Mezzanine、FeinCMS,把这四个项目的依赖清单翻到底,底座都是同一个框架:Django。
这不是谁跟谁约好了,是 Django 顺手把 CMS 最费工的那几样地基备齐了。
Django 替 CMS 备好的那几样
Django 官网 Overview 页把自带能力列在 Fully loaded 那一节,原文写的是"Django takes care of user authentication, content administration, site maps, RSS feeds, and many more tasks — right out of the box"。
用户认证、内容管理、站点地图、RSS feed,都不用装插件。
拿这几样对照一个 CMS 的零件表:
- 用户认证:CMS 后台要登录、要分权限,编辑不能发稿、作者只能改自己的。Django 的 auth 自带用户、组、权限模型,这层不用重写。
- 内容管理后台:Django Admin 能照着数据模型自动生成增删改查界面,模型改一次、界面跟着长。后台这套"照模型生成界面"的机制,CMS 直接接得上。
- 站点地图与 RSS:sitemap 与 syndication 都是官方 contrib 模块,配好就出 sitemap.xml 和 feed。
- ORM 与模板:内容模型说到底是数据模型,ORM 的迁移机制跟着模型走;前台页面用模板引擎渲染,前后台共用同一套模型。
地基共用,盖法各家不同。django CMS 在 Django Admin 之上加前台工具栏,后台仍开在 Django admin 里;Wagtail 另做了一套独立的编辑后台 wagtail.admin,用 content_panels 定编辑界面,替代原生 Django Admin。共用的是 Django 的模型、权限与认证,后台那一层各家自己盖。
Flask 那边不是没试过
Python 的 Web 框架不止 Django 一个。Flask 生态里出过 CMS:Quokka,仓库建于 2013 年,README 自称"The Happiest CMS in the world",列的技术栈是 Flask、Flask-Admin、TinyMongo 加 Pelican 主题。
现在仓库描述栏前面多了一行 LOOKING FOR NEW MAINTAINER,最后推送停在 2019 年 11 月,仓库已归档。
Flask 官方对"micro"的解释是:核心保持简单、可扩展,不替你决定用什么数据库,默认不带数据库抽象层与表单校验,这些交给扩展自己加。
拿它写 CMS,等于把 Django 备好的那几样挨个找扩展拼一遍——Quokka 的后台就是 Flask-Admin 拼的,数据存 TinyDB 或 MongoDB 另配。零件凑齐之后,页面树、草稿、审批、前台渲染这些 CMS 的本体还得自己写。
FastAPI 主打接口与异步,后台界面同样不在自带能力里,走这条路也要补同一套。
这个事实改变选型顺序
Python 技术栈选 CMS 的顺序跟 PHP 那边是反的。WordPress 这类 PHP 系统自带整套底座,装完就写内容,用户可以不碰框架、不写代码;Python 这边没有这条捷径,上面四个 CMS 全是 Django 应用,选任何一个都要连 Django 一起学。
所以真正的分岔口在更前面:会不会 Django,或者愿不愿意为这个站学。
- 会,或者愿意学:在 Wagtail 与 django CMS 之间挑。前者用 StreamField 拼结构化内容块、配独立后台;后者按页面树加占位槽、编辑在前台直接改。内容结构和编辑习惯定哪家。
- 不会,也不想学:别在 Python 生态里硬找。写博客用 Ghost,做内容站用 WordPress,装完就有后台,不用先学框架。Quokka 那个已归档的仓库,就是这条路走到头的样子。
- 还有一条中间路:Pelican、Nikola、MkDocs 这类静态站生成器不要求 Django,只在构建时把文件渲染成页面。代价也清楚,不建后台、不存内容,多人要写、要审批就接不住。
先答这一句,再挑具体哪家。
本篇数据来源:
- Django 官方 Overview 页(Fully loaded 一节的自带能力原文):https://www.djangoproject.com/start/overview/
- Django 官方 contrib 文档(auth、admin、sitemaps、syndication 均为自带模块):https://docs.djangoproject.com/en/6.1/ref/contrib/
- Flask 官方设计文档(“micro” 的定义:不带数据库抽象层与表单校验,靠扩展补):https://flask.palletsprojects.com/en/stable/design/
- Quokka 仓库(2013 年创建、基于 Flask 与 Flask-Admin、描述栏 LOOKING FOR NEW MAINTAINER、2019-11 最后推送、已归档):https://github.com/quokkaproject/quokka
- Wagtail 官方教程(
content_panels定义 Wagtail admin 编辑界面):https://docs.wagtail.org/en/stable/getting_started/tutorial.html - django CMS 官方 toolbar 文档(后台开在 Django admin 的侧边框架内):https://docs.django-cms.org/en/stable/how_to/13-toolbar.html
- FastAPI 官网(接口与异步框架定位):https://fastapi.tiangolo.com/
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/damoluomu/article/details/170556306




