Lukas Schwarzlmüller

Why Wagtail

Why Wagtail

Building Beautiful Sites with Wagtail and why not use plane Django.

If your site is mainly about publishing content for humans to read-pages, articles, landing pages, help docs-Wagtail gives you the parts you’d otherwise spend days inventing in plain Django. Out of the box you get a clean editor interface that non-developers can actually use, a page tree that mirrors your site’s structure, drafts and previews so nothing goes live by accident, and scheduling for when it should. In Django alone, you’d be stitching together forms, permissions, and custom views to approximate the same experience, and you’d still be missing the nice details.

The big win is how Wagtail treats content as structured blocks rather than one giant body field. With StreamField you can define building blocks-hero, gallery, quote, callout—and editors compose pages by arranging them. That means you keep design and layout consistent while giving editors flexibility. In plain Django, you’d either hard-code layouts into templates or build a maze of custom models and forms for every variation.

Media is another pain Wagtail solves. Editors can upload images and documents once, apply automatic crops and sizes (respecting a chosen focal point), and reuse assets across the site. The template tags handle the right rendition for each placement. Recreating that pipeline in vanilla Django means juggling Pillow, storage backends, and custom template utilities, plus your own UI for picking and reusing files.

Wagtail also bakes in the “website plumbing” teams always ask for: search integration, sitemaps, redirects, canonical URLs, and role-based permissions. If you work in a team with reviews or legal sign-off, Wagtail’s workflow lets one person draft, another approve, and someone else publish, all with auditability. For multilingual sites, you can maintain per-locale versions of each page and manage translation without inventing your own conventions.

None of that means plain Django is wrong. If your project is primarily an application-dashboards, transactions, APIs, background jobs-and the “content” is just a couple of static pages you’ll touch twice a year, Wagtail adds weight you won’t use. Django’s strengths are speed and control: model your domain, write the views, ship. If only developers will edit text and you don’t need a media library, a page tree, or editorial workflows, sticking to Django keeps the code path short and obvious.

A useful mental model is this: when the core problem is publishing (lots of pages, changing copy, non-dev editors, images everywhere), Wagtail accelerates you and protects your team from foot-guns. When the core problem is application logic (data flows, calculations, state machines), plain Django stays out of your way. And you don’t have to choose forever-Wagtail is just a Django app. Many teams run Wagtail for the marketing/docs part of the site and write pure Django apps alongside it in the same project.

So, reach for Wagtail when editors need autonomy, consistency matters, and content changes frequently. Reach for plain Django when you’re building features, not pages. If your project has both needs, combine them: Wagtail for the pages, Django for the product.

# 1) Create env + install Wagtail
python3 -m venv .venv && source .venv/bin/activate
python -m pip install --upgrade pip wheel
pip install wagtail

# 2) Start project and install deps
wagtail start mysite && cd mysite
pip install -r requirements.txt

# 3) DB + admin user + run
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

# Open:
# Site  -> http://127.0.0.1:8000/
# Admin -> http://127.0.0.1:8000/admin/  (add a “Blog” section + posts later)