21 Nov 2025
Django community aggregator: Community blog posts
Django News - Django 6.0 release candidate 1 released - Nov 21st 2025
News
Django 6.0 release candidate 1 released
Django 6.0 release candidate 1 is now available. It represents the final opportunity for you to try out a mosaic of modern tools and thoughtful design before Django 6.0 is released.
Python Insider: Python 3.15.0 alpha 2
This release, 3.15.0a2, is the second of seven planned alpha releases. Alpha releases are intended to make it easier to test the current state of new features and bug fixes and to test the release process.
Django Software Foundation
Twenty years of Django releases
Since we're celebrating Django's 20th birthday this year, here are a few release-related numbers that represent Django's history:
Python Software Foundation
New Login Verification for TOTP-based Logins
PyPI has added email verification for TOTP-based logins
Updates to Django
Today, "Updates to Django" is presented by Raffaella from Djangonaut Space! ๐
Last week we had 17 pull requests merged into Django by 9 different contributors - including 2 first-time contributors! Congratulations to Hong Xu and Benedict Etzel for having their first commits merged into Django - welcome on board!
News in Django 6.1:
The admin site login view now redirects authenticated users to the next URL, if available, instead of always redirecting to the admin index page.
Inspectdb now introspects HStoreField when psycopg 3.2+ is installed and django.contrib.postgres is in INSTALLED_APPS.
Django Newsletter
Sponsored Link 1
LearnDjango.com Black Friday Sale - 50% Off
This is the only annual discount available for lifetime access to three books by Will Vincent: Django for Beginners, Django for APIs, and Django for Professionals.
Articles
Django-related Deals for Black Friday 2025
Adam Johnson has posted his now annual listing of Django-related Black Friday deals with discounts on various books, packages, services, and more.
Open source funding in 2025
Buttondown has long-maintained a page of open source usage and contributions. This update adds two new tools. It would be wonderful if all companies acted like this!
How to use UUIDv7 in Python, Django and PostgreSQL
Learn how to use UUIDv7 today with stable releases of Python 3.14, Django 5.2 and PostgreSQL 18. A step by step guide showing how to generate UUIDv7 in Python, store them in Django models, use PostgreSQL native functions and build time ordered primary keys without writing SQL.
Planning My (Django) Retirement (Again)
Carlton Gibson reflects on his continued involvement with Django (in so many ways!) and also actual plans to step away a bit over the coming year.
Beyond ruff: Boa Restrictor is the new Python linter on the block
How opinionated tooling will save your day - or night.
Cross-Site Request Forgery
A very good description of this long-standing security risk in web development.
Going build-free with native JavaScript modules
Modern browsers support native JavaScript modules and CSS features, so Django projects can skip frontend build tools while using ManifestStaticFilesStorage for production.
How to display a JSON value in Django admin (when using MySQL)
Show how to extract and cast a JSON value in MySQL-backed Django models to annotate and sort datetime fields in the admin list view.
Understanding the Different POST Content Types
Practical overview of POST content types with Django examples showing request parsing and validation for form, multipart, JSON, NDJSON, text, XML, and binary.
Django Fellow Report
Fellow Report - Natalia
Another week with a strong focus on security work. Most of the effort went into preparing and issuing the November security release, along with some follow-up permission and access reviews. CNA tasks and training also continued in the background.
Fellow Report - Jacob
This week we landed a migrations fix that prevents flaky CircularDependencyErrorswhen squashed replacements are in play. If you haven't tried squashing migrations in a while, check out main and give it another go!
We also fixed an unreleased regression in the urlize template filter-big thanks to Mehraz Hossain Rumman for testing the beta. (Are you the next tester to report a regression before 6.0 final?)
Forum
Pre-PEP: Rust for CPython - Core Development
A proposal to introduce the Rust programming language to CPython.
Django News Jobs
Job Application for Senior Application Security Engineer at Energy Solutions - USA
Senior Back-End Developer at Showcare
Django Newsletter
Django Forum
Add Plausible Tracking to DjangoProject.com?
An ongoing thread around adding anonymized tracking to the djangoproject.com website.
Projects
ambient-innovation/boa-restrictor
A Python and Django linting library.
pls-rs/pls
pls is a prettier and powerful ls(1) for the pros.
blighj/django-manifeststaticfiles-enhanced
Enhanced ManifestStaticFilesStorage for Django.
This RSS feed is published on https://django-news.com/. You can also subscribe via email.
21 Nov 2025 5:00pm GMT
20 Nov 2025
Django community aggregator: Community blog posts
Django-related Deals for Black Friday 2025
Here are some Django-related deals for this year's Black Friday (28th November) and Cyber Monday (1st December), including my own.
I'll keep this post up to date with any new deals I learn about. If you are also a creator, email me with details of your offer and I'll add it here.
My books
My four books have a 50% discount, for both individual and team licenses, until the end of Cyber Monday (1st December), including Boost Your GitHub DX, which I released last week. This deal stacks with the bundle offers and purchasing power parity discount for those in lower-income countries.
Individual books:
- Boost Your GitHub DX - $22 instead of $44
- Boost Your Git DX - $22 instead of $44
- Boost Your Django DX - $22 instead of $44
- Speed Up Your Django Tests - $24.50 instead of $49
Bundles:
- Boost Your Git* DX Bundle - the Git and GitHub "Boost Your DX" books, $39 instead of $78
- Boost Your DX Bundle - all three "Boost Your DX" books, $58.50 instead of $117

Aidas Bendoraitis' paid packages
Aidas Bendoraitis of djangotricks.com has created three paid packages. Use the links below for a 20% discount, available until the end of the 1st December.
-
Django GDPR Cookie Consent - a customizable, self-hosted cookie consent screen. This package takes the pain out of setting up legally-mandated cookie banners and settings, without using an expensive or inflexible vendor.
-
Django Paddle Subscriptions - an integration with Paddle's billing API for subscriptions. This package allows you to collect SaaS payments internationally with a reliable payment processor.
-
Django Messaging - ready-to-use, real-time solution for Django that saves months of development. It offers private and group chats, embeddable widgets, flexible settings, a modern UI, and supports both WebSocket and polling.

Appliku
Appliku is a deployment tool designed for Django. It can deploy your project to AWS, DigitalOcean, Hetzner, and other cloud servers.
They're offering 30% off all annual plans, for one year, until the 1st December. Use code BLACKFRIDAY2025 at checkout.

Async Patterns in Django
This book is a tour through the advanced topic of asynchronous programming in Django. It covers the range of tools and protocols available for asynchronous behaviour in your web application. It's written by Paul Bailey, an experienced Principal Engineer.
Paul is offering ~50% off the book with the coupon link, discounting the book from $39.95 to $21. This is available until the 1st December.

SaaS Pegasus
Cory Zue's SaaS Pegasus is a configurable Django project template with many preset niceties, including teams, Stripe subscriptions, a front end pipeline, and built-in AI tooling. It can massively accelerate setting up a SaaS in Django.
The "unlimited license" is discounted 50%, from $999 to $499.50. This deal is available from the 21st November until the 3rd December.

Bonus: Django itself
Django is maintained by the Django Software Foundation (DSF), a non-profit organization that relies on donations to fund its work. So while it cannot run sales, supporting it is definitely a good deal!
If your organization relies on Django, please push to sign it up as a corporate sponsor. For $1,000 or more, you can get your logo featured on the Fundraising page, and you can feature a badge on your own site.
Otherwise, you can also donate as an individual on:
- GitHub Sponsors - adds to your GitHub bill.
- Threadless - grab some custom-printed merchandise.
- The Fundraising Page - bills from a credit card with Stripe.
Your money will go towards:
- Paying the Django Fellows, Natalia, Sarah, and Jacob, who merge respond to tickets, merge code, and make releases.
- Helping organize DjangoCons in Africa, America, and Europe, and other events.
- Hosting the documentation, source code, ticketing system, and CI system.
- A very long tail of activities that keep the framework alive and thriving.
At the time of writing, Django is only 59% towards its annual funding goal of $300,000:
Let's fill up that heart! ๐๐๐
Fin
May you have fun supporting Django creators and the DSF this Black Friday and Cyber Monday!
-Adam
20 Nov 2025 6:00am GMT
19 Nov 2025
Django community aggregator: Community blog posts
Ansible-lint pre-commit problem + "fix"
I'm used to running pre-commit autoupdate regularly to update the versions of the linters/formatters that I use. Especially when there's some error.
For example, a couple of months ago, there was some problem with ansible-lint. You have an ansible-lint, ansible and ansible-core package and one of them needed an upgrade. I'd get an error like this:
ModuleNotFoundError: No module named 'ansible.parsing.yaml.constructor'
The solution: pre-commit autoupdate, which grabbed a new ansible-lint version that solved the problem. Upgrading is good.
But... little over a month ago, ansible-lint pinned python to 3.13 in the pre-commit hook. So when you update, you suddenly need to have 3.13 on your machine. I have that locally, but on the often-used "ubuntu latest" (24.04) github action runner, only 3.12 is installed by default. Then you'd get this:
[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/ansible-community/ansible-lint.git.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
An unexpected error has occurred: CalledProcessError: command:
('/opt/hostedtoolcache/Python/3.12.12/x64/bin/python', '-mvirtualenv',
'/home/runner/.cache/pre-commit/repomm4m0yuo/py_env-python3.13', '-p', 'python3.13')
return code: 1
stdout:
RuntimeError: failed to find interpreter for Builtin discover of python_spec='python3.13'
stderr: (none)
Check the log at /home/runner/.cache/pre-commit/pre-commit.log
Error: Process completed with exit code 3.
Ansible-lint's pre-commit hook needs 3.10+ or so, but won't accept anything except 3.13. Here's the change: https://github.com/ansible/ansible-lint/pull/4796 (including some comments that it is not ideal, including the github action problem).
The change apparently gives a good error message to people running too-old python versions, but it punishes those that do regular updates (and have perfectly fine non-3.13 python versions). A similar pin was done in "black" and later reverted (see the comments on this issue) as it caused too many problems.
Note: this comment gives some of the reasons for hardcoding 3.13. Pre-commit itself doesn't have a way to specify a minimum Python version. Apparently old Python version cans lead to weird install errors, though I haven't found a good ticket about that in the issue tracker. The number of issues in the tracker is impressively high, so I can imagine such a hardcoded version helping a bit.
Now on to the "fix". Override the language_version like this:
- repo: https://github.com/ansible-community/ansible-lint.git
hooks:
- id: ansible-lint
language_version: python3 # or python3.12 or so
If you use ansible-lint a lot (like I do), you'll have to add that line to all your (django) project repositories when you update your pre-commit config...
I personally think this pinning is a bad idea. After some discussion in issue 4821 I created a sub-optimal proposal to at least setting the default to 3.12, but that issue was closed&locked because I apparently "didn't search the issue tracker".
Anyway, this blog post hopefully helps people adjust their many pre-commit configs.
19 Nov 2025 5:00am GMT
