Django 3.0

3.0 released 2 December 2019, latest 3.0.14.

Django 3.0 reached end of life on 6 April 2021.

What changed

Django 3.0 added an ASGI application interface through django.core.asgi, enabling deployment on ASGI servers and laying groundwork for later asynchronous features. It introduced enumeration types for model field choices, including TextChoices and IntegerChoices, and expanded PostgreSQL-specific capabilities. The cycle supported newer Python runtimes than its predecessor and removed support for Python 3.5. It also carried forward deprecations and compatibility changes that later Django releases remove.

What staying costs

Django 3.0 has reached end of life, so security fixes and compatibility fixes are no longer issued for this line. Remaining on it increases exposure when vulnerabilities are found in Django or in dependencies whose supported versions have moved on. It also constrains Python, database-driver, application-server, and third-party package upgrades, because current package releases commonly no longer test or support this Django version. The longer an application remains on this line, the more deprecated APIs, changed defaults, and dependency-version gaps accumulate before an upgrade.

What to do

Plan an upgrade to a currently supported Django release rather than treating 3.0 as a stable destination. Inventory the deployed Python version, database backend and driver, ASGI or WSGI server, middleware, authentication integrations, and third-party Django packages; identify versions that support the intended Django target. Read the release notes and deprecation notes for each intervening upgrade step, then update code and settings for removed APIs and changed behavior. Run the full test suite, add coverage for models and migrations, forms, templates, admin customizations, authentication flows, caching, and deployment startup, and test the upgrade against a production-like database. Deploy incrementally with rollback capability, and keep Django and its dependencies on maintained release lines afterward.

We can tell you what moving off Django 3.0 involves.

What it takes to move off Django 3.0 depends on what you built on it — the version you are on, how much depends on it, and how much of the work is mechanical. Leave your email with this version and we can tell you what that looks like for you.

Not sure yet? Get my plan