16 Oct 2026
Django community aggregator: Community blog posts
Issue 359: Python 3.15 Is Here and Python 3.16 Alpha 1
News
Python 3.15.0 (final) is here!
Python 3.15 is out, with explicit lazy imports (PEP 810), built-in frozendict and sentinel types, UTF-8 as the default encoding, and a JIT that runs 7-12% faster depending on the platform. If you use IDLE or tkinter on macOS 27, read the release notes first: menu dialogs can hang.
Python 3.16.0 alpha 1 is now available
The first of seven alphas for Python 3.16 is out, with features landing until the May 4, 2027 beta and the final release planned for October 5, 2027. Library maintainers are invited to start testing now.
Django Software Foundation
Django Steering Council Meetings - 2026
Notes from the October 5 meeting with the Fellows: the set-returning DEP needs reviewers, every memcached Python client is now defunct, and Python 3.15 support raises questions about makedirs permission semantics. PyPy 8.0 support and the Sovereign Tech Fund's resilience program were also on the agenda.
Wagtail CMS News
We have a stellar group of speakers for Wagtail Space 2026
The schedule is out for this year's online, half-day Wagtail Space, opening with Thibaud Colas's State of Wagtail. Talks cover running Wagtail at scale on Kubernetes, measuring a site's web emissions, agent readiness, and Wagtail Preen, a new codemod CLI.
Updates to Django
Last week we had 26 pull requests merged into Django by 9 different contributors - including a first-time contributor! Congratulations to Abheet for having their first commits merged into Django - welcome on board!
New in Django 6.2:
- The
nowtemplate tag now supports passing a template variable as the format string.
New in Django 6.1:
- To improve accessibility, the admin's breadcrumbs are now rendered as
<li>elements within an<ol>instead of<div>elements. The breadcrumb for the current page is now marked witharia-current="page". - Added compatibility for
oracledb26.0.0+ (#37411). - Fixed a regression in Django 6.1 where the YAML serializer crashed if passed the
sort_keysoption (#37405). - Fixed a regression in Django 6.1 where a
Valueexpression with aNonevalue and an output field other thanJSONFieldcrashed on SQLite when used in a top-levelJSONFieldinlookup (#37403). Using such an expression in anINlookup is likely unintended, since SQLNULLcannot match any value.
Django Fellow Reports
Django Fellow Report - Jacob
Jacob cleared a spike of release blockers for 6.1.2, all but two of them found internally using a model, and added compatibility for python-oracledb 26. He also fixed a YAML serializer crash with sort_keys and landed prep work for multiline template tags.
Django Fellow Report - Sarah
Sarah shipped the October 6 security release (four CVEs plus a follow-up across three versions), the most complex she has done, and reviewed fixes like @non_atomic_requests now recognizing async views. Discussions about contributor sustainability mean Django may sit out next summer's GSoC.
Django Fellow Report - Natalia
Natalia confirmed a low-severity vulnerability and prepared its patch, filed two public hardening tickets (multipart boundaries and response header characters), and paused new HackerOne submissions. She also opened a PR to replace Django's vendored makedirs with os.makedirs() on Python 3.15+.
Sponsored
Reach 4,300+ Engaged Django Developers
Sponsor this newsletter to reach an active community of Python and Django developers.
Articles
Django: set up its test suite with uv
Adam Johnson's alternative to the official contributing setup: one uv pip install -e . -r tests/requirements/py3.txt gets Django and its test requirements into a fresh virtual environment. If pylibmc won't compile, filter it out with grep -v and process substitution, and Django skips only the memcached tests.
Towards Async Transactions in Django
Transactions need ordered queries, but async tasks interleave at every await, so one task's rollback can throw away another's writes. Carlton Gibson lays out the design worked out at the Django on the Med sprints: async with transaction.atomic() gets its own worker thread and connection, with only the opening task allowed to nest. He is aiming for 6.2, and a follow-up post says the asgiref release it depends on is due at the end of October. django-filter 26.2 is also out, adding Python 3.15 and escaping LinkWidget labels by default.
Personal Replacement for Echofeed
With Echofeed winding down, Paul Traylor built his own blog-to-Mastodon pipeline on Django's new tasks framework. His django-feedparser-low package handles feed scraping with ETag and 304 support, and a feed_filter decorator ties a task to an Entry's post_save so each feed can trigger its own processing.
Django Beginners: Part 2
Andrew Miller fleshes out his django.contrib.beginners idea as "guardrails" (stricter, silenceable warnings against common foot-guns) and "scaffolds" (starting points like the registration view django.contrib.auth leaves out), in a package meant to be outgrown. He wants to build it with a group from day one and is looking for collaborators.
Django Day Copenhagen 2026 and Secrets
Efe Oge recaps the talks that stuck with him, from Tom Carrick on rate limiting to Denny on timezones, and the hallway finding behind his own signing talk: most teams hand secret management to Ansible Vault or Kubernetes rather than Django.
Iframes that finally fit their content
Chrome 154 adds frame-sizing: content-height, so an iframe grows to fit its content with one line of CSS instead of postMessage and ResizeObserver plumbing. The catch: the embedded page has to opt in with a responsive-embedded-sizing meta tag naming the origins allowed to size it.
Core Dispatch #11
Six weeks of CPython news: Python 3.15.0 final, new PEPs for None-aware access and coalescing operators, PEP 755 withdrawn in favor of PyPI policy, the inaugural Python Packaging Council election results, and two new core developers.
Podcasts
Django Chat #207: Hiring in 2026 with Jon Gould
Jon Gould is the founder of Foxley Talent, a recruiting agency focused on Python and Django developers. We discuss what he's seeing in the market these days, the benefits of attending Python & Django conferences, and why humans matter more than ever in our new AI age.
Prefer to watch? The full episode is also on DjangoTV.
Videos
Django Day Copenhagen 2026
The October 2 livestream is now split into individual talks on DjangoTV, including keeping secrets secret in Django, timezone-safe Django, pre-commit hooks that catch Django problems early, admin model views and stand-alone pages, maintainable CRUD, and the lightning talks.
Django Job Board
Django roles were light this week, so here are two machine learning openings at HFT Architecture, one senior and one junior, that should appeal to Python and Django developers looking to branch out.
Machine Learning Engineer at HFT Architecture ๐
Junior Machine Learning Engineer at HFT Architecture ๐
Projects
pradeeppc/django-permission-tracer
DRF permissions end up spread across permission_classes, @action overrides, get_permissions() and composed expressions. This resolves all of it into an endpoint-to-permission map, traces which operand denied a given request, and flags endpoints an anonymous user can reach, with --fail-on-unprotected for CI.
pradeeppc/django-q-watchdog
When a django-q worker dies mid-task, the task simply vanishes: no failed row, no traceback. This records each task as it starts and heartbeats while it runs, so lost and timed-out tasks land in django-q's own Failed tasks, and a hung one gets reported as frozen.
Sponsor Django News
Reach 4,300+ Django developers every Friday. See sponsorship details and rates.
16 Oct 2026 3:00pm GMT
Django: check version support with norwegianblue
Django projects end up slotting into a bunch of software release cycles: Django itself, Python, database servers, cache servers, and more. It can be hard for us developers to keep track of all of them, with their different support policies and end-of-life dates, and running an unsupported version means missing out on important security or bug fixes.
norwegianblue is a handy command-line tool for checking software support dates. It fetches data from endoflife.date, a community-maintained database of release cycles for hundreds of products, and displays it as a colour-coded table. It's from Hugo van Kemenade, the Python 3.14 and 3.15 release manager, and named after the deceased parrot from Monty Python's infamous Dead Parrot sketch.
Let's look at checking the release cycles for Django, Python, PostgreSQL, and other relevant tools with it.
Install it
norwegianblue provides two commands: norwegianblue and the shorter alias eol. I recommend the alias, since it's easier to type and remember, and will use it throughout this post.
To make both commands available everywhere, install norwegianblue globally. If you use uv, do so with uv tool install:
$ uv tool install norwegianblue
Otherwise, install it with your preferred tool, such as a global pip install or pipx.
Check Django
Run the command without any arguments to see the list of product names it knows about:
$ eol
adonisjs
akeneo-pim
...
Somewhere in that long list are django and python, among others you probably care about. Run the command a product name to see its release cycles, for example:
$ eol django
Here's the output of checking Django's release cycles today, trimmed to the most recent versions:
Each row is a feature release, with LTS (long-term support) releases marked. The columns show:
release: when the feature release came out.latestandlatest release: the latest patch version and its release date.support: the end of mainstream support, after which the release only receives security fixes.eol: the end of extended support, after which the release receives no fixes at all.supportedPythonVersions: the range of Python versions that the release supports.
The dates are colour-coded: red for dates in the past, yellow for dates within the next six months, and green for dates further out. The cycle names take the colour of their eol dates, so you can quickly spot unsupported versions.
So, from the above, we can see that Django 6.1, 6.0, and 5.2 are currently supported, with 6.0 recently moving into security-fixes-only mode. Django 5.0 and 5.1 are end-of-life, so if you're still using them, it's time to upgrade! (My tool django-upgrade can help).
Check Python
You also need a supported Python version, which you can check with:
Here, support is the end of bugfix releases, and eol is the end of security releases. The pep column names the PEP containing each version's release schedule, for example PEP-790 for Python 3.15.
Python 3.10 reached its end of life recently, so it's time to upgrade any projects still using it!
Check PostgreSQL
The most popular database for Django projects is PostgreSQL, which you can check with the postgresql product name:
PostgreSQL supports each major version for five years, with no separate end of mainstream support. PostgreSQL 14 reaches its end of life next month, so it shows in yellow, as a warning to upgrade soon.
Django also drops support for old PostgreSQL versions, generally around their end-of-life dates. The Django database docs list the minimum version that each release supports.
Check other products
endoflife.date covers hundreds of products, so you can likely check most of your stack. Django-relevant products include:
- Other databases:
mariadb,mysql,sqlite,oracle-database, andmssqlserver. - Hosted databases:
amazon-rds-postgresql,amazon-rds-mysql,amazon-rds-mariadb,amazon-aurora-postgresql,azure-database-for-postgresql, andheroku-postgres. - Caches and other services:
redis,valkey,memcached, andelasticsearch. - Operating systems and web servers:
ubuntu,debian, andnginx. - Frontend tooling:
nodejs. - Django-based projects:
wagtail.
norwegianblue caches its data for the rest of the day, so repeated runs are fast. It can also output Markdown, reStructuredText, JSON, and other formats, as listed in --help, which may be useful for pasting into documentation or scripting checks.
Fin
Thanks to Hugo for making norwegianblue, and to the endoflife.date contributors for maintaining its data.
That web framework is not dead, nor is it just resting!
-Adam
16 Oct 2026 4:00am GMT
15 Oct 2026
Django community aggregator: Community blog posts
Pycon NL: what's inside an asyncio event loop? - Taras Kozlov
(One of my summaries of the 2026 one-day Pycon NL conference in Utrecht, NL).
An asyncio event loop is defined by asyncio.AbstractEventLoop. That's a large API with more than 50 public methods, but only three are fundamental. At the lowest useful leve, the loop manages callbacks, i/o and timers.
- We need a way to put events on a queue and a way to grab events from a queue and execute them. call_soon()
- We need timers too, for callbacks that must be run after some time. call_later()
- Sleep only knows about time. Often we want to sleep until the next time, unless a socket becomes ready first. So we need a "sleep" that can be interrupted by I/O readiness. add_reader(), add_writer()
His own example implementation of asyncio for educational purposes is at: https://github.com/tarasko/eduloop , it is only 250 lines. Handy if you want to understand asyncio.
He showed this simple example code, incrementally implementing the points above.
The nice thing about asyncio is coroutines. A coroutine is an extended kind of function that can be paused and resumed. The result is a "future". A future represents an eventual result of an async operation. So: a future is pending until somebody supplies either a result or an exception.
For network connection there's Transport and Protocol.
Unrelated photo from our Nelen&Schuurmans company trip to Cologne/Kรถln in Germany. St. Gereon church.
15 Oct 2026 4:00am GMT

