21 Nov 2025

feedDjango 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.

djangoproject.com

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.

blogspot.com

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:

djangoproject.com

Python Software Foundation

New Login Verification for TOTP-based Logins

PyPI has added email verification for TOTP-based logins

pypi.org

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.

learndjango.com

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.

adamj.eu

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!

buttondown.com

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.

paulox.net

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.

noumenal.es

Beyond ruff: Boa Restrictor is the new Python linter on the block

How opinionated tooling will save your day - or night.

medium.com

Cross-Site Request Forgery

A very good description of this long-standing security risk in web development.

filippo.io

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.

djangoproject.com

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.

enriquesoria.com

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.

djangotricks.com

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.

djangoproject.com

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?)

djangoproject.com

Forum

Pre-PEP: Rust for CPython - Core Development

A proposal to introduce the Rust programming language to CPython.

python.org

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.

djangoproject.com

Projects

ambient-innovation/boa-restrictor

A Python and Django linting library.

github.com

pls-rs/pls

pls is a prettier and powerful ls(1) for the pros.

github.com

blighj/django-manifeststaticfiles-enhanced

Enhanced ManifestStaticFilesStorage for Django.

github.com


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

feedDjango 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:

Bundles:

Adam Johnson book sale 2025

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.

    Buy it on Gumroad

  • 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.

    Buy it on Gumroad

  • 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.

    Buy it on Gumroad

Aidas Bendoraitis pacakages sale 2025

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.

Buy on the Appliku site

Appliku sale 2025

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.

Buy on Leanpub

Async Patterns in Django sale 2025

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.

Buy it on saaspegasus.com

SaaS Pegasus sale 2025

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:

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:

Django Software Foundation Funding Page 2024

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

feedDjango 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