认证、后台、站点地图、ORM:Django 替 CMS 备好的四样

举报
DevUp 发表于 2026/11/11 19:34:18 2026/11/11
【摘要】 四个 Python CMS 共用 Django 地基,后台却各盖各的;认证、权限、ORM 开箱自带。Flask 试过,Quokka 仓库停在 2019 年。

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,只在构建时把文件渲染成页面。代价也清楚,不建后台、不存内容,多人要写、要审批就接不住。

先答这一句,再挑具体哪家。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。