// the find
wagtail/wagtail
A Django content management system focused on flexibility and user experience
Wagtail is a Django-based CMS that's been the go-to Python CMS for about a decade. It's built around a tree-structured page model with a block-based content editor (StreamField) and a React-powered admin UI. Used in production by NASA, the NHS, and Mozilla — this is mature, battle-tested software, not a weekend project.
StreamField is genuinely well-designed: it enforces content structure without locking editors into rigid templates, which is the right tradeoff for editorial teams. The admin UI is fast and unusually thoughtful for a Python CMS — image focal-point selection, live preview, and inline commenting are all first-class features. Headless support via the content API means you're not trapped in server-rendered Django if your frontend stack moves on. The codebase has proper TypeScript in the client layer, a full test suite, and semgrep in CI — not just documentation theater.
The page tree model is a design constraint disguised as a feature: everything must be a Page subclass in a tree, which fights you hard for non-hierarchical content types like products or events. StreamField migrations are painful — adding or renaming block types in production requires custom data migrations that are easy to get wrong and not clearly documented. The frontend JavaScript layer is a hybrid of legacy jQuery, Draft.js, and React components that have accumulated over years; it works but it's not a codebase you want to contribute to. Performance requires explicit opt-in (cache middleware, `select_related` everywhere) — the default query patterns will hammer your database at non-trivial page counts.