Wagtail vs django CMS

Wagtail suits teams that want structured content, built-in workflows and a headless API in core. django CMS suits teams that want front-end editing and placeholder-based page layouts. Both are BSD-3-Clause and both run on Django.

On this page

Wagtail vs django CMS: when each one fits a Django content team

A team that has already standardized on Django and needs a CMS it can self-host will find two BSD-3-Clause options in the same ecosystem: Wagtail and django CMS. Both are free for open and closed-source use, so the decision turns on how the platform shapes content and the work around it, not on license cost. Choose Wagtail when editors need structured content built from blocks, since its StreamField model, content workflows and moderation, and multi-site and multi-language support all ship in core. Choose Wagtail as well when the same content must reach a separate front end, because its headless API is part of the core package rather than a separate add-on. Wagtail ships a feature release every three months and an LTS release about every four feature releases, with Wagtail 7.4 LTS supported until November 2, 2027 according to the Wagtail release schedule.

Choose django CMS when editors should work directly on the rendered page. Its front-end inline editing, placeholder and plugin system, and hierarchical page tree suit teams whose editors think in pages and want to place plugins into layout regions. Content versioning, editorial workflows and headless setups come from official add-on packages rather than the core, so a team that needs those capabilities should budget for the add-ons and confirm their support status with the django CMS Association. django CMS 5.0.x on Django 5.2 has LTS until March 2028, and 6.0.x on Django 6.2 is planned with LTS until March 2030, according to the django CMS documentation.

The decision turns on four questions. First, the editorial model: blocks in a stream, or plugins in placeholders on a page. Second, versioning needs: check whether Wagtail's core workflow tooling meets your approval chain or whether django CMS add-ons must be installed, tested and maintained. Third, headless requirements: confirm the API fields and access controls each platform would expose to your front end. Fourth, the Django upgrade path: map each CMS's supported Django versions, including Wagtail's support for Django 5.2.x, 6.0.x and 6.1.x, against your own Django schedule before you commit to either.

Which scenario favors which platform

This table maps common Wagtail and django CMS scenarios to the platform that usually fits better and the condition that makes it true. Read each row as a starting hypothesis, since add-ons, team Django experience and your editorial model can shift the answer. Confirm the fit for your own content with a proof of concept before committing.

ScenarioBetter fitCondition and what to confirm
Structured editorial content with reusable blocksWagtailWagtail's StreamField suits pages built from typed, reusable blocks. Confirm that editors can work within the block definitions you plan to build.
Page-builder style marketing sites with many layoutsdjango CMSdjango CMS's placeholder and plugin system and front-end inline editing suit editors who place components directly on the page. Confirm the plugin set covers your layouts.
Multi-site and multi-language estatesEither, depending on editor workflowBoth list multi-site and internationalization support. Test how each handles your language fallbacks and site-level permissions in a proof of concept.
Headless front ends with a separate JavaScript teamWagtailWagtail includes a headless API in the core. With django CMS, headless setups come from official add-on packages, so budget time to evaluate and maintain them.
Content versioning and revision historyWagtail, with core workflowsWagtail includes content workflows and moderation in the core. django CMS provides versioning through add-on packages, so confirm which package and version match your Django release.
Teams that need a fixed upgrade windowWagtail, if on LTSWagtail 7.4 LTS has security support until November 2, 2027, and LTS releases come about every four feature releases. django CMS 5.0.x LTS on Django 5.2 is supported until March 2028, so match the LTS line to your Django plan.
Teams with an existing django CMS codebasedjango CMSMigrating a working django CMS site has a cost that usually outweighs the gain. Keep the platform unless a specific requirement cannot be met.

How each platform is built and what that means for operations

Wagtail and django CMS both sit on Django, but they make different choices about how content is modeled, searched, exposed to other systems and edited. Each card below names one of those choices and the operational work it creates for a team that will run the platform itself.

Content model: StreamField or placeholders

Wagtail stores page body content in StreamField, a typed set of blocks defined in Python that the database holds as structured data. django CMS places content into placeholders on templates and fills them with plugin instances. For a self-hosting team, StreamField means block schema changes are code migrations that developers must ship and test, while plugin-based content means editors can add plugins without a deployment but the team must track plugin versions and their data. Ask which model fits your editors' workflow before committing to templates.

Page tree and multi-site structure

Both platforms organize pages in a hierarchical tree and support multiple sites and languages, which lets one installation serve several brands or regions. The operational question is how many sites and locales share one database, one cache and one release cycle. A single shared instance simplifies upgrades but couples every site to the same Django version and add-on set. Separate instances isolate risk but multiply patching, backups and monitoring. Confirm how each platform's internationalisation and site configuration map to your content governance before deciding on one installation.

Search backend: Elasticsearch or PostgreSQL

Wagtail integrates search with either Elasticsearch or PostgreSQL. PostgreSQL keeps the stack smaller, since the team already operates the database for content, but search features and relevance tuning are more limited. Elasticsearch adds a second stateful service with its own cluster sizing, index rebuilds and version upgrades. Identify which search features your site needs, then confirm with the Wagtail documentation which backend supports them and what operating load each one adds. Django CMS search depends on its add-ons and the search setup your team chooses, so verify that during scoping.

Headless API built into Wagtail

Wagtail ships a headless API in the core project, so the same page and image data can feed a separate front end without an extra package. That reduces the number of components your team must version and secure. Django CMS handles headless delivery through official add-on packages instead of core, so the team must confirm which add-on version pairs with the CMS version in use and who maintains it. Before choosing either, list the front ends that will consume content and check whether each one needs an API that the core project provides.

Front-end editing and editorial workflow

django CMS offers front-end inline editing, where editors change content directly on the rendered page. Wagtail uses a separate admin interface with content workflows and moderation built into the core. Inline editing can speed up page-building for marketing teams, but it depends on template structure and add-on compatibility after each upgrade. Wagtail's workflow features reduce the need for extra packages when approval chains are required. For either platform, test the editor experience with real approval steps and confirm which versioning and workflow features come from core and which come from add-ons.

Capabilities, licensing and support windows compared

This table sets Wagtail and django CMS side by side on license, current release lines, LTS windows, Django and Python support, and whether editing, workflow, headless and versioning features ship in the core or as add-ons. Where a cell says to confirm, the supplied research does not settle the point, so check the current documentation before you commit. Both projects are BSD-3-Clause, but their LTS timelines and add-on boundaries differ.

CapabilityWagtaildjango CMS
LicenseBSD-3-Clause, free for open and closed-source useBSD 3-Clause, per the project README badge
Current release linesWagtail 8.0 (August 25, 2026) and 7.4 LTS (May 4, 2026)django CMS 5.1.3 (September 23, 2026) and 5.0.13 (September 24, 2026)
LTS policyFeature release every three months; LTS about every fourth release, supported for 18 monthsFollows Django's LTS policy; 5.0.x supported until March 2028, 6.0.x planned until March 2030
Supported Django versionsDjango 5.2.x, 6.0.x and 6.1.xDjango 5.2, 6.0 and 6.1 for the 5.1.x line
Python supportConfirm the supported Python range in the current Wagtail documentationPython 3.10 to 3.14 for the 5.1.x line
StreamField and page structureStreamField for structured content, included in the corePlaceholder and plugin system with a hierarchical page tree, included in the core
Workflows and moderationContent workflows and moderation included in the feature setEditorial workflows come from official add-on packages
Headless APIBuilt-in headless APIHeadless setups come from official add-on packages
Versioning and searchIntegrated search with Elasticsearch or PostgreSQL; confirm revision history in the docsContent versioning from add-on packages; confirm search backends in the django CMS docs

What is free, what is an add-on and what is paid

Wagtail is BSD-3-Clause licensed and free for open-source and closed-source use, so you can self-host it, modify it and ship proprietary sites built on it without a license fee to the project. The core already includes the features many teams look for first: StreamField for structured content, multi-site and multi-language support, a headless API, integrated search, image focal points and content workflows with moderation.

  • No license fee: the BSD-3-Clause terms apply to the core you deploy, with no paid edition gating those features.
  • Built-in capabilities: StreamField, workflows, moderation and the headless API ship in the core rather than in add-ons.
  • Search backends: integrated search works with Elasticsearch or PostgreSQL, and each backend adds its own hosting and operating work.
  • Supported Django versions: the core supports Django 5.2.x, 6.0.x and 6.1.x, so the Django version you can run is set by the Wagtail release you choose.
  • Release cadence: feature releases arrive every three months, and LTS releases are supported for eighteen months.

Confirm your own staffing and upgrade plan, since the license cost is zero but the engineering time to patch and test each release is yours unless you contract it out. Check the Wagtail release schedule before choosing a version.",

How LTS windows and Django versions shape upgrade planning

Start with the Django version your organization can actually run, because it caps both platforms. Wagtail ships a feature release every three months, and an LTS release typically arrives about once every four feature releases with eighteen months of support. Wagtail 7.4 LTS, released May 4, 2026, has security support until November 2, 2027, and Wagtail 8.3 LTS is scheduled for May 4, 2027 with support until November 6, 2028. Wagtail 8.0 was released on August 25, 2026. Wagtail currently supports Django 5.2.x, 6.0.x and 6.1.x, so a Django upgrade on your side can force a Wagtail upgrade on the same timeline.

django CMS follows Django's LTS policy rather than a fixed cadence of its own. According to the django CMS documentation, the 5.0.x line on Django 5.2 has LTS until March 2028, and 6.0.x on Django 6.2 is planned with LTS until March 2030. The 4.1.x LTS ended in March 2026, so any site still on it is already past its security window. Confirm the current LTS table in the django CMS documentation before you commit, because a planned line is not a guaranteed one. Ask whether your team would track django CMS minor releases, which Django version each one pins, and whether a Django major upgrade is expected inside the window you plan to run.

Upgrades are where effort accumulates, so plan the calendar before the build. Map each platform's support end date against your Django upgrade date, then budget for the custom StreamField blocks or plugins, third-party packages and any django CMS add-ons that must move with it. Ask a partner to estimate those tasks in a written scope, including test coverage for editorial workflows and search. Both projects publish their support windows, so the decision you are making is which upgrade cadence your team can sustain for the life of the site, not which platform is newer.

What makes moving between them expensive

Moving a site from Wagtail to django CMS, or the reverse, rarely fails on the framework itself. The cost sits in the content model, the templates, the search index, the editorial workflow and the URLs that already rank and receive traffic. Each card below separates what carries over from what has to be rebuilt.

Content model and StreamField mapping

Wagtail stores pages as StreamField blocks, while django CMS stores content in placeholders filled by plugins. Neither structure maps one to one, so each page type needs a written field and block mapping before any data moves. Content that is plain text or image files usually transfers cleanly. Nested blocks, custom block types and inline references need a rebuild. Ask for a field-level mapping document before scoping the migration.

Templates and plugin rebuild

Front-end templates are the most visible rebuild. Wagtail page templates render StreamField blocks, and django CMS templates render placeholders and plugin output, so each template is rewritten rather than copied. Custom Django models, template tags and form logic usually survive because both systems run on Django. Review every custom plugin or block to decide whether it is retired, rebuilt or replaced by an existing package.

Search index rebuild

Search indexes are tied to the content model they index, so changing the model means reindexing from scratch. Wagtail's integrated search can use Elasticsearch or PostgreSQL, and any move must confirm which backend the target system uses and how it is configured. Plan a full reindex in staging and compare result quality for the top search queries before cutover. This step is one-time, but it is easy to skip.

Workflow and versioning rebuild

Wagtail includes content workflows and moderation in the core, while django CMS provides content versioning and editorial workflows through official add-on packages. Approval chains, roles, scheduled publishing and revision history do not move automatically between the two. Confirm which add-on packages are required, check their supported Django versions, and rebuild each approval chain in the target before editors start using it.

URL and redirect preservation

Page paths, slugs and internal links are what search engines and inbound links depend on. The page tree in each system is organized differently, so URL structures may need to be recreated to match the old paths. Export every indexed URL from the current site, map each one to its new location, and keep a redirect file tested in staging. Missing redirects are the most common source of traffic loss after a switch.

Editor retraining and adoption

Editors who know Wagtail's page explorer and StreamField editing will need new habits in django CMS, including front-end inline editing and placeholder-driven layout. The retraining cost is recurring in the sense that every new editor needs it, and it is paid again if staff turnover is high. Budget time for training, a parallel run period and written editorial guides for each content type.

The order of work when moving from one to the other

This sequence turns a move between Wagtail and django CMS into a set of checked stages, so each change to content, data model and URLs is verified before the old site is retired. The order below is illustrative and should be confirmed against your own content inventory before any work is scoped.

  1. Inventory content types and plugins

    List every page type, snippet or model, placeholder or plugin in use, custom template tag and third-party package on the current site. Include the editor roles, scheduled publishing jobs and any search or image rendition settings that the front end depends on. The output is a written inventory signed off by the content owner and the lead developer, with each item marked as keep, rebuild or retire. Done means no content type exists on the old site without a named destination.

  2. Map the data model to the target

    Translate each source content type into its target equivalent: a Wagtail page model with StreamField blocks, or a django CMS page with placeholders and plugins, and record where each field, relation and rich-text fragment lands. Flag every place where the two models do not map one to one, since those need a decision rather than a conversion script. The output is a field-level mapping document reviewed by the editorial team. It is done when every source field has a target and every exception has an owner.

  3. Decide versioning and workflow add-ons

    Confirm which Django version, Wagtail or django CMS release line and Python version the new stack will run, and check each against the supported versions in the release schedule and the django CMS documentation. Then decide how content versioning, editorial approval and any headless delivery will be provided, since django CMS supplies these through official add-on packages. Ask the vendor or your partner to confirm current support windows for the exact versions chosen. The output is a written version and add-on decision record approved by your security and platform leads.

  4. Build a parallel environment

    Stand up the target site beside the current one, in the same cloud account or data center, with the same database engine family where practical, and the same search, media storage and authentication integrations. Load the mapped content models and templates without live editors touching it. The output is a working staging environment with a configuration record that matches production controls, including backups and logging. It is done when a clean deployment can be rebuilt from code alone.

  5. Migrate and verify content

    Run the migration in repeatable batches, starting with a small sample of each content type, then the full set. After each batch, compare record counts, rich-text output, image renditions, translations and published states against the source. Have content owners review a defined sample of pages in each language and each site. The output is a migration log and a verification report with every discrepancy either fixed or accepted in writing. It is done when two consecutive full runs produce no unexplained differences.

  6. Preserve URLs and redirects

    Export every indexed and linked URL from the current site, including media and language prefixes, and map each one to its new address. Implement permanent redirects for any path that changes and confirm that search engine sitemaps, canonical tags and analytics tags carry over correctly. Test a sample of high-traffic and legacy URLs in the staging environment. The output is a redirect map and a test report showing that every mapped URL resolves to the intended page. It is done when no mapped URL returns an error or an unintended page.

  7. Cut over and monitor

    Schedule the switch during a window agreed with the content team, freeze edits on the old site, run a final incremental migration, and point DNS or the load balancer to the new stack. Keep the old environment in read-only mode so that rollback remains possible until the agreed acceptance checks pass. Monitor errors, redirects, search indexing and editor login problems for the period you agree in advance. The output is a signed cutover record. It is done when the acceptance checks pass and no rollback has been triggered.

  8. Retire the old stack

    After the agreed acceptance period, archive the old database, media files, code and configuration in a form your retention policy allows, then revoke its credentials, DNS records and server access. Remove scheduled jobs and monitoring alerts that still refer to it. The output is a decommissioning record listing what was archived, where, and who approved deletion. It is done when no live system, credential or scheduled job still depends on the old site.

What implementing each one involves and where projects run long

Implementing either Django CMS is a Django project first and a content project second, so the first decisions are about the data model. In Wagtail, that means choosing how page types are composed, where StreamField blocks replace free-form rich text, and which fields belong to snippets instead of pages. In django CMS, the equivalent decisions sit around placeholders, plugins and the page tree. Teams should write down the content types, their owners and their relationships before any theme work starts, because changing a page model after editors have entered content is the most expensive correction in either system.

Theme and template work, editor training, search and multi-language setup follow the model. Confirm which search backend each platform will use (Wagtail lists Elasticsearch or PostgreSQL as integrated options), how each locale is structured across sites, and which editor roles and workflow stages the content team needs. Identity is a separate workstream: confirm with your identity team how SSO is delivered to the admin, whether group membership maps to editor and publisher roles, and whether the chosen version and add-ons support that integration. Hosting and backup need a named owner for database, media files and search indexes, with a tested restore procedure. The Django upgrade cadence also belongs in the plan. Check the Django versions each release supports, and align your upgrade windows with Wagtail's LTS and feature releases or django CMS's LTS line.

Projects usually run long in three places. Content modeling is the first, because stakeholders often disagree about page types only once they see editor screens. Add-on selection is the second: django CMS needs separate packages for content versioning, editorial workflows and headless delivery, so each add-on's maintenance status, Django compatibility and licensing should be checked before estimating integration work. Migration of legacy content is the third, since mapping old URLs, images and metadata into the new model usually takes longer than the initial build. Ask any implementation partner for a written scope that names the model review, add-on decisions and migration rules as separate deliverables, with the acceptance criteria for each.

Questions buyers ask before choosing between Wagtail and django CMS

Which one costs more to run over time?

Neither license adds a fee, since Wagtail is BSD-3-Clause and django CMS is also BSD 3-Clause licensed, so run cost comes from people, hosting and upgrades. Wagtail's core covers StreamField, workflows, search and a headless API, so fewer add-ons may be needed for those features. django CMS keeps versioning, editorial workflows and headless setups in official add-on packages, so budget for those packages and their upgrade cycles. Ask each vendor or partner to price hosting, the search backend, the version-control add-on and the Django upgrade path in one written scope.

Can a team without Django experience operate either CMS?

Both are Python and Django applications, so someone on the team has to read Django code, manage migrations and handle Python upgrades. Wagtail's model-driven content types and StreamField blocks are defined in Python, so developers who know Django will adapt quickly, while editors work in the admin. django CMS relies on placeholders and plugins, which also require Django knowledge to extend. If your team has no Django skills, plan for training or an implementation partner for the first release and for each major upgrade.

How long does a migration take, and what drives the timeline?

The timeline depends on content volume, template complexity, custom plugins or StreamField blocks, integrations, and how many languages and sites must move. No duration is supplied for either platform, so ask for a fixed-scope plan that lists each content type, the mapping rules and the test cycles. Cross-CMS moves usually cost more in content mapping and editorial review than in code, because page trees and plugin structures rarely map one to one. Set acceptance criteria per content type before work starts.

Do editors need training before they can use either CMS?

Yes, editors need training on the admin, but the amount depends on the model you choose. Wagtail's workflows and moderation give editors a defined review path, which means training should cover approval steps, previews and page locking. django CMS offers front-end inline editing and a page tree, which some editors find faster but which also requires them to learn plugin placement. Budget time for a pilot group of editors, and confirm with each vendor which editor features need an add-on.

Is a headless front end supported out of the box?

Wagtail includes a headless API in the core, so a separate front end can read content without a bolt-on package. django CMS does not include headless delivery in its core, since its headless setups come from official add-on packages. Confirm the exact API features, authentication options and caching behavior for your front end framework before you commit, and check whether the add-on is maintained for the Django version you plan to run.

Which LTS release should we pin for production?

Pin an LTS release and plan the next upgrade before you go live. Wagtail 7.4 LTS, released May 4, 2026, has security support until November 2, 2027, and Wagtail 8.3 LTS is scheduled for May 4, 2027 with support until November 6, 2028. For django CMS, 5.0.x on Django 5.2 has LTS until March 2028, and 6.0.x on Django 6.2 is planned with LTS until March 2030. Match the Django version to your hosting and library needs, and confirm the support windows against the official schedules before you pin.

Can our own team run the platform, or do we need outside help?

Your team can run either platform if it has Python, Django, database and deployment skills and time for upgrades. Ongoing work includes applying LTS and feature releases, rebuilding add-on compatibility, patching the database and reviewing security advisories. DeployOpen plans, implements, hardens, backs up, upgrades and documents self-hosted platforms in your own infrastructure, and most engagements are fixed-scope with agreed deliverables. Ongoing support and upgrades are also available as retainers. Start with an internal skills review, then compare that against a written scope from a partner.

How DeployOpen helps choose, implement or migrate between them

DeployOpen is a Chainscore Labs company that plans, implements, customizes, integrates, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms inside your own infrastructure. For Wagtail vs django CMS, we work from your content model, editorial workflow, Django version constraints and hosting setup to produce a written scope before any build starts.

How we scope

  • Written scope covers content model, editorial workflow, languages and sites, and the headless API consumers involved.
  • Scope records the Django version and LTS line you plan to run, and which add-ons your versioning and workflow needs require.
  • Engagements are fixed-scope, with deliverables and timelines agreed in writing before work starts.

How we build

  • Build covers StreamField or placeholder-based content models, page templates, and integrations with your identity and search stack.
  • Testing covers editor workflows, permission rules, multi-language output and upgrade paths between feature or LTS releases.
  • Deployment runs inside your cloud account, data center or air-gapped network, using your database and search services.

How we hand over

  • Handover includes configuration, architecture notes and runbooks for upgrades, backups and restores.
  • Documentation records which add-on packages, licenses and Django versions the system depends on, so your team can audit them.
  • Compliance readiness material is prepared as evidence for your assessors, which DeployOpen does not itself certify.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • Retainers can track Wagtail feature and LTS release windows, or django CMS LTS dates, against your upgrade calendar.
  • Ask in your quote how support covers add-on updates, security patches and Django version moves.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.