Issue 350: Django moves to an annual release cycle
News
Django moves to an annual release cycle
Starting in January 2028, Django switches from its eight-month cycle to one feature release per year (matching Python's annual October releases), dropping the LTS distinction in favor of every release getting one year of mainstream support followed by two years of security and data-loss fixes; nothing changes before then.
DSF Office Hours
The DSF Board holds open office hours every Wednesday at 6:00 PM UTC, no agenda or invitation needed. Right now the main topics are the Executive Director search and the 2026 fundraising goal.
Django Girls - August Newsletter
Tie-in with Djangonaut Space for a team to work on the Django Girls infrastructure during the upcoming session. Plus a call to join the Social Media Team.
PyPI freezes the HTML index API
PyPI is adopting PEP 833 to stop extending the HTML simple-index format with new metadata, pushing future additions to the JSON API instead; nothing breaks and no action is needed unless you're a mirror or bulk consumer, in which case consider switching to JSON.
Releases
Django REST Framework 3.18.0
Django REST Framework 3.18.0 drops support for Django 4.2, 5.0, and 5.1, adds Django 6.1 support, and changes list-serializer (many=True) errors to a dict format. It also adds a @throttle_scope decorator for function-based views, unaccent support in SearchFilter, and nulls_distinct support for UniqueTogetherValidator.
Python 3.12.14, 3.11.16, and 3.10.21 are now available!
Security-only releases for the three versions, fixing roughly 30 vulnerabilities including path-traversal issues in tar/ZIP extraction, billion-laughs protection in XML parsing, and (for 3.11 and 3.10) an SSL certificate parsing fix; upgrading is highly recommended.
Wagtail 8.0rc1
The first 8.0 release candidate adds custom base page models, a global permission-policy registry, and rich-text-to-HTML serialization in the v2 API. It stops downconverting AVIF/WebP images to PNG by default and adds provisional Django 6.1 support, pending django-ninja compatibility.
Django Software Foundation
Django Steering Council Meetings - 2026
At its August 3 meeting, the Steering Council voted on DEP 19 membership matters, discussed DEP 20's annual release cycle, and talked through what "Django Core Developer" should mean. Fellows also flagged DEP 19 implementation gaps, a naming question for the ORM's RAISE fetch mode, and an upcoming table-expressions proposal.
DjangoCon US
Save 10% on DjangoCon US 2026 registration
DjangoCon US 2026 runs August 24 to 28 in Chicago and ONLINE, now under two weeks away. Register through our link to take 10% off. A new One Day rate is now available if you can't make the whole week. Time is running out to get your ticket. Get yours before they are gone! Online tickets available.
Python Software Foundation
Announcing the Packaging Council Election Candidates for 2026!
The inaugural Python Packaging Council election has 17 nominees for 5 seats (the top 2 get two-year terms, the next 3 get one-year terms); PSF voting members must affirm by August 25 at 2:00 pm UTC, with voting running September 1-15.
Announcing the PSF Board Candidates for 2026!
18 candidates are running for 4 open PSF Board seats, with the same August 25 affirmation deadline and September 1-15 voting window; members who voted last election are carried over automatically unless their email changed.
Wagtail CMS News
Free talk ideas for Wagtail Space 2026
Wagtail Space 2026 runs November 18-20, and the CFP is open at pretalx.com/wagtail-space-2026/cfp; organizers are capping AI-focused talks at roughly half the program, so non-AI proposals stand a better chance.
Updates to Django
Today, "Updates to Django" is presented by Raffaella from Djangonaut Space! 🚀
Last week we had 14 pull requests merged into Django by 8 different contributors - including 2 first-time contributors! Congratulations to Jakob Friedrich and OsmnvAslan for having their first commits merged into Django - welcome on board!
The fetch mode that raises a FieldFetchBlocked exception has been renamed to FETCH_RAISE.
Thanks to the contributor's effort, the admin save_as behavior for view-only inlines has been fixed, ensuring they are correctly rendered after validation errors.
The documentation for converting a ManyToManyField to use a through model has also been updated for converting correcting incorrect on_delete options and adding some additional caveats.
Django Fellow Reports
Django Fellow Report - Jacob
Django 6.1 shipped this week. Jacob also cross-pollinated GSoC's multi-column subquery work with a search-performance improvement he tried out on djangoproject.com.
Django Fellow Report - Natalia
Most of Natalia's week went to the security release, then assisting Jacob with the Django 6.1 final release, including translation updates that turned into a bit of a spiral.
Django Fellow Report - Sarah
Sarah's main focus was the GSoC project migrating Django's integration tests from Selenium to Playwright, which she hopes to land soon.
Articles
Nifty Feature: Admin Form Injection
Reuse Django admin's built-in popup machinery (showRelatedObjectLookupPopup() and dismissRelatedLookupPopup()) to build custom popup workflows that inject a value into an admin form field, not just the stock foreign-key picker.
Storing Django Static and Media Files on Cloudflare R2
A walkthrough of wiring django-storages and boto3 up to Cloudflare R2 (zero egress fees), using two buckets: a public one for static files and public media with querystring_auth = False, and a private one for restricted media served through signed URLs.
Introducing django-msgspec
django-msgspec swaps in msgspec, a C-based serializer several times faster than the standard library, as a drop-in replacement for JsonResponse, DRF's parsers and renderers, session serializers, and more. It handles numeric dict keys and huge integers that trip up orjson, though it encodes non-finite floats as null and rejects None/boolean dict keys.
Newlines
Why splitting text into lines is trickier than it looks, and why Python's splitlines() recognizes ten different line-break code points.
Introducing emojet, a fast emoji lookup library
Adam Johnson built emojet, a Rust-backed replacement for the emoji package's emojize()/demojize(), after finding that package's 520 KB JSON file cost 22ms just to import. emojet imports 23.7x faster, is up to 70x faster on lookups, and uses about 40% less memory.
Events
Keynote: Boldly Go, Building Worlds: Is there Room for me on the Bridge? - Dawn Wages
Dawn Wages opens DjangoCon US 2026 Monday at 9:00 AM, drawing on Star Trek and Octavia Butler's Afrofuturism to reflect on a decade in the Python community (PSF Board Chair, Django Girls, Wagtail) and what it takes to build equitable, accountable open source spaces.
What I'm looking forward to at DjangoCon US 2026
Attending for his fifth year, the author is most looking forward to the people, an open-spaces package-maintainers discussion, running Sprints as chair alongside Kudzayi Bamhare, and the speakers dinner. He'll also be handing out handmade bookmarks to fellow readers.
DjangoCon US 2026 conference prep
Three quick logistics posts from the organizers: why you should volunteer (badges, room timing, and speaker support, no experience needed), how to give a Lightning Talk (five minutes, any topic, sign-up announced onsite), and how to stay active (a Strava group, the hotel's pool and gym, and the 18-mile Lakefront Trail).
Videos
Introducing t-strings: f-strings with superpowers - Dave Peck (PyCascades 2026)
Dave Peck introduces Python 3.14's t-strings, which look like f-strings but evaluate to Template instances, helping prevent SQL/HTML injection and enabling custom formatting via libraries like tdom and t-sql. He covers when to reach for them, adoption strategies, and current editor tooling support.
Django Job Board
Full Stack Software Engineer (Hybrid) at Provision 🆕
Toronto-based construction-AI startup building full-stack product surfaces and AI-forward document-processing systems.
Executive Director at Django Software Foundation 🆕
Remote US role running the DSF's fundraising, operations, and public representation as its first Executive Director.
Security Developer at Python Software Foundation
Global remote role triaging CPython/PyPI vulnerabilities and remediating supply-chain attacks alongside the Python Security Response Team.
Senior Full Stack Engineer at Hive Collective
US-only remote, backend-leaning full-stack role at a profitable LegalTech SaaS with an AI-assisted workflow.
Senior Backend Engineer at MyOme
Remote US backend role building portal integrations for patients and providers ordering genetic testing.
Python + TypeScript Engineers at Fusionbox
Remote US consultancy role building Django/React systems for financial workflows and multi-tenant architectures.
Projects
adamchainz/django-msgspec
msgspec-powered utilities for Django.
adamchainz/emojet
Convert, find, and count emoji in Python.
