Django 6.0 is out

brian@dws.team
December 4, 2025
12 days ago
Django 6.0 is out

The new features are strong. But most teams should stay with the LTS a little longer.

Not with flashy new APIs, but with practical upgrades: background tasks built in. Reusable template fragments. Cleaner email handling. CSP support.

If you work with Django, or plan to, this release is worth understanding, even if you’re not ready to jump yet. Let’s walk through what’s new, why it matters, and how we’re thinking about it at DWS.


What’s new in Django 6.0, core highlights

Built‑in background tasks

You can now define asynchronous work with a native @task decorator and run it via an external worker. No need for Celery or custom queues just to send email or process data in the background.

It won’t replace complex queues, but for many apps, this is enough. And much simpler.

Template partials

You can now define reusable template fragments, finally. That means cleaner markup, less duplication, and a more maintainable codebase. Especially helpful for teams building larger frontends in Django.

CSP support

Security gets a serious upgrade: Django now supports Content Security Policy headers out of the box. That helps you protect against injection attacks and enforce trusted content sources without third-party middleware.

Email API improvements

The email system has been modernized, with better Unicode support, more consistent encoding, and a simpler base class (EmailMessage) for common use cases.

Clearer defaults

Django 6.0 reflects a slow but steady shift: less reliance on third-party packages for common needs. Fewer moving parts. More batteries included. That’s good.


Django 6.0 is worth a serious look if:

  • You’re starting a new project, 6.0 gives you cleaner defaults, simpler architecture, and less overhead.

  • You’re maintaining an existing app that needs background tasks, CSP, or email improvements now.

  • You want to reduce complexity by removing third-party packages that are no longer necessary.

Many of these features replace packages you’d install anyway. That means fewer bugs, fewer updates to track, and fewer things to explain to the next developer.


What to watch out for

Upgrading major framework versions always takes work. A few things to check first:

  • Dependencies: Not all third-party packages are 6.0-ready yet.

  • Testing: Background jobs, templates, and emails may behave differently. Test thoroughly.

  • CSP: Enabling CSP requires you to audit your static files, inline scripts, and asset domains.

This is a release you should plan for, not rush into.


How we’re thinking about 6.0 at DWS

We acknowledge Django 6.0 is a strong release. But we don’t jump in just because something is new.

Most teams running production apps should stay on 5.2 LTS for now. And we are, too.

But we are watching 6.0 closely.

We're testing it in new side projects. Updating our internal starter templates. Watching library support mature. And we’ll likely migrate before the next LTS, because less glue code means better long-term outcomes.

This release shows where Django is going. What’s getting baked in. What patterns will become the new standard.

It’s worth paying attention.


Next steps

Django 6.0 isn’t a rewrite-everything release. It’s a maturity milestone.

If you care about clean code, fewer dependencies, and building for the long term, 6.0 is good news.

If you're still on Django 4.x (or even older), now is the right time to move to 5.2 LTS.

If you’re starting something new and want to explore Django 6.0, we can help.

Book a discovery call: we’ll help you plan your stack, audit your upgrade path, or simplify your current setup.