Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
Boolean algebra
The third article in the series, still on conditions. The previous installment was about their shape — merging ifs, factoring shared decisions, dropping checks that earn nothing. This one reaches for the other lever: the algebra of the conditions themselves — not a textbook tour, just the handful of transformations I lean on in everyday code. -
Issue 342: DSF Executive Director Search
## News Announcing the Search for a DSF Executive Director The Django Software Foundation is hiring its first Executive Director, and we have the Django community to thank for making it possible. Six Django web development agencies have jointly pledged $47,500 to help fund the Executive Director's first year: Caktus Group, Lincoln Loop, Six Feet Up, Cuttlesoft, OddBird, and Two Rock. This is the financial foundation we needed to move from "we should hire an ED someday" to "we are hiring an ED now." I'm delighted to rejoin the Sovereign Tech Fellowship Hugo van Kemenade returns to the Sovereign Tech Fellowship after being one of six participants in the 2025 pilot, calling out how dedicated time helped ship Python 3.14 and 3.15 releases, mentor triagers, and improve release automation and accessibility. The post also tracks a wide set of community and governance work, and looks ahead to a larger 2026 cohort spanning maintainers, community managers, and technical writers. Python Software Foundation Python Software Foundation News: PSF Board Election Dates for 2026 PSF Board elections for 2026 open for nominations on July 28 (2:00 pm UTC) and voting runs September 1 to September 15, with voter affirmation due August 25. The … -
The 2026 way of using importmaps in Django
The 2026 way of using importmaps in Django I last wrote about Django, JavaScript modules and importmaps in May 2025, slightly over a year ago. The main topic of this post is the django-js-asset 4.0 release. The library is used in many places, some of the more well-known packages using it are django-mptt and django-ckeditor. I have since done a lot of work evolving the ways of integrating importmaps but the efforts to standardize upon an approach have stalled a bit. The main reason for this, apart from time and energy, was that I wasn’t really all that happy with the global importmap. When I had only a few modules using the importmap facility, I didn’t care all that much. Now that the recently released django-content-editor 9.0 also uses importmaps for shipping a refactored, much more modular JavaScript implementation while still keeping all the benefits of cache busting using ManifestStaticFilesStorage1, having a global importmap got annoying. The content editor JavaScript is only used within the Django administration interface, but when using a single global importmap object, the importmap entries were always there on each page that used an importmap at all. A better solution was needed. I’m a big fan … -
Cheating as a programming discipline
Great programmers cheat. A hard problem gets quietly swapped for an easier one; a transaction-grade database is replaced by a flat file nobody misses; machinery everyone else considers mandatory simply never gets built. They know a lot — and that’s exactly why they get away with it. -
This isn't a post about eating meat
I think vegetarians are mostly right. Most of their arguments about why we shouldn’t eat meet — environmental impact, treatment of animals, treatment of workers in the industry, health effects of too much meat consumption, climate impact, etc. — I tend to nod along. I’m broadly in agreement with most of their main arguments. And yet, I still eat meat. Why? Partially, it’s because while I agree with most arguments against meat eating, I also think that by and large vegetarians overstate their cases. Most of the environmental and social impacts aren’t really effects of eating meat; they’re results of the choices we’ve made as a society about how we produce meat. Namely, our system of industrialized farming. We don’t have to produce meat in a way that’s environmentally damaging; we’ve chosen to. Likewise, poor health outcomes are a result of eating too much meat (and not enough variety otherwise) — not something inherent in meat itself. My guess, though, is that these arguments aren’t actually that important to most vegetarians: I think that most are probably making the decision on a moral ground. They see killing animals as inexcusable, and sort of back into the other arguments because they’re … -
LLM Inspired Development
How Claude inadvertently suggested new features for my personal site. -
Understanding Memory Usage in Django Webserver Workers
If you are coming from the PHP world, you might be used to thinking that when a request reaches the web server, everything is parsed and processed from scratch. In Python, however, the behavior is a little different. A Python web server (for example, Gunicorn) starts one or more worker processes and then continuously accepts and processes requests as a running server application. In this article, I will explore how memory is managed in that environment. Startup time vs. request execution When you run a Django web server (either the development server or a Gunicorn-based deployment), there are two phases of execution: startup, when the server application is initialized, and the request/response cycle, when a request is received and processed to return a response. During startup, wsgi.py and get_wsgi_application() are executed once per worker at boot time, Django settings are evaluated, applications listed in INSTALLED_APPS are imported and registered, ready() methods of app configs are called, and URL patterns are compiled. During request execution, the middleware chain processes the request, the URL is resolved, the view is executed, context managers run within the view, the template is rendered, the middleware chain processes the response, and the response is returned. The … -
Issue 341: Django 2026 Fundraising Goals
News DSF 2026 Fundraising Goals The Django Software Foundation is raising its 2026 annual fundraising goal from $300,000 to $500,000. The money supports the Django Fellows program, legal and trademark work, community grants and events, ongoing infrastructure, and progress toward hiring an Executive Director. Announcing Our DjangoCon US 2026 Talks! DjangoCon US 2026 released its tutorial and talk lineup for Aug 24 to Aug 26, with live access for online-only ticket holders and free YouTube uploads after the conference. Expect sessions spanning Django 6.1 and modern ORM patterns, performance testing, Wagtail routing, Postgres updates, and deployment topics, with the final schedule to follow soon. Vulnerability and malware checks in uv uv introduces uv audit to scan locked dependencies for known vulnerabilities and adverse statuses, positioned as a faster uv-native alternative to pip-audit. Updates to Django Today, "Updates to Django" is presented by Hwayoung from Djangonaut Space! 🚀 Last week we had 16 pull requests merged into Django by 11 different contributors - including 5 first-time contributors! Congratulations to jodizzle, Bankai, Chris Rose, esperonus-karolis and Wes P. for having their first commits merged into Django - welcome on board! This week's Django highlights: 🦄 Made DjangoJSONEncoder consistently omit the .000 fractional-second … -
Running Fallout London on Bazzite
I’m a huge Fallout fan, and Fallout London is one of the most impressive mods I’ve seen in years: a full DLC-sized expansion set in post-apocalyptic London, made by a community team. Running it on Bazzite (my gaming OS of choice) wasn’t completely straightforward, so here’s what actually worked for me. Consider this a note to future me, but hopefully it saves someone else an afternoon of trial and error. What you’ll need Bazzite installed on your machine Heroic Games Launcher Fallout 4 (the mod requires it as a base) The “Fallout London One Click Mod” (available through Heroic) The steps 1. Install Heroic Games Launcher If you don’t have it yet, install Heroic from the Bazzite app store or via Flatpak. It’s a fantastic open-source launcher that handles GOG, Epic, and Amazon games, and it plays very nicely with Proton. After you install it, login with your GOG account 2. Install the Fallout London One Click Mod Search for “Fallout London” in Heroic and install the One Click Mod version. This bundles everything together so you don’t have to manually manage mod files. Let it do its thing. 3. Disable UMU (yes, it needs to be disabled) This is … -
Logical optimizations
The second article in the series. The first was about control flow; this one stays with the same tactic — reshaping code — one layer down, at the condition. Here: merging ifs, factoring shared decisions, and dropping checks that earn nothing. The Boolean algebra of conditions — De Morgan and friends — is a different lever, and gets its own installment next time. -
Browser Push Notifications for a Django Website
For DjangoTricks, and some other websites, I intentionally didn't set email notifications when a feedback message arrived – I didn't want to pay for an email server or spam my inbox. While checking the messages in the database from time to time, sometimes I found out about them too late. Last weekend, I decided to implement Web Push notifications to get notified about the feedback in my OS, just like in this example: This tutorial walks through adding Web Push notifications to a Django project from scratch. When a visitor submits a feedback form the site owner receives a native browser notification — even if the admin tab is closed — thanks to a service worker and a Huey background task. How it works Push Notifications work in such a way: at first, people who want to get notifications need to subscribe to the notifications in their browser. The subscribers are stored on the push notification servers and also their identifiers are stored in Django website database. Whenever we need to send the messages to those subscribers, we send them to push notification server that passes the message to all subscribers if their browsers are open at the moment. If … -
Issue 340: Django security releases 6.0.6 and 5.2.15
News Django security releases issued: 6.0.6 and 5.2.15 Five CVEs are fixed in this latest release. As ever, perhaps the best security step you can take is to always update to the latest version of Django. Updates to Django Today, "Updates to Django" is presented by Hwayoung from Djangonaut Space! 🚀 Last week we had 13 pull requests merged into Django by 8 different contributors - including 4 first-time contributors! Congratulations to Vishwa, Tim Harris, Codequiver, and Joe Babbitt for having their first commits merged into Django - welcome on board! This week's Django highlights: 🦄 Deprecated the safe parameter of JsonResponse, as the browser vulnerability it protected against was fixed in ECMAScript 5. #36905 Releases Python Release Python 3.15.0b2 Python 3.15.0b2, the second beta of four, is out with an explicit push for third-party maintainers to test now and file issues as early as possible. The release targets feature-complete beta with no ABI changes after beta 4, and recommends delaying production releases until 3.15.0rc1. Python Software Foundation PSF Strategic Plan 2026 Draft: Open for Community Feedback PSF is publishing the full Strategic Plan 2026 draft and opening a three-week feedback window ending June 25. The board asks reviewers to … -
Anything new?
Anything new? A lot of time has passed since I officially announced that I want to step down from maintaining django-mptt. I started contributing around 2009, tagged the 0.3 release in April 2010, and have been the sole active maintainer since somewhere around 2019. The post about django-tree-queries has more background, but that’s not today’s topic. Stepping away isn’t easy For me, abandoning a project is a bit like stepping out of a relationship: negative emotions end up being a somewhat necessary driver, because the absence of positive events alone rarely provides enough force on its own. I get a lot of satisfaction from a job well done, and walking away means letting that go. Even with time set aside for open source in my work day, I still have to choose where that time goes. django-mptt stopped being where it needed to go. The sense of entitlement When a project is obviously unmaintained, asking for free labor is walking a tightrope. It takes real care not to rekindle exactly the frustrations that led maintainers away in the first place. It takes energy not to clap back when someone is being rude or insensitive in the issue tracker. Asking “Anything … -
You don't need React to be reactive — djust 1.0 is here
djust 1.0 is here — reactive UI for Django in pure Python. No client state, no JavaScript framework, no build step, no API layer. It brings the proven Phoenix LiveView model to Django with a Rust VDOM on the hot path. Try it live (multi-user, no install) at start.djust.org. -
Code is cheap
The first time I said “code is cheap” out loud in a meeting, a manager waved at the budget — headcount, salaries, the tooling line — and asked which part of that looked cheap. He wasn’t wrong about the number — he was wrong about what it was buying. -
My PyCon Italia 2026
A timeline of my PyCon Italia 2026 journey, in Bologna (IT), told through the Mastodon posts I shared along the way. -
Django: introducing django-integrity-policy
Back in January, Firefox’s Security & Privacy Newsletter for 2025 Q4 piqued my interest with this mention: Integrity-Policy: Firefox 145 has added support for the Integrity-Policy response header. The header allows websites to ensure that only scripts with an integrity attribute will load. A new security header! That’s right up my street: I’ve cared about getting security headers right since 2018, when I created django-permissions-policy to set the Permissions-Policy header. (At the time, it was called Feature-Policy: why they changed it, I can’t say, people just liked it better that way.) The new Integrity-Policy header helps with subresource integrity, a tool for securely including third-party scripts and stylesheets on your website. Browsers support the integrity attribute on <script> and <link> tags, which allows you to specify a hash of the expected content, like: <script src=https://cdn.jsdelivr.net/npm/htmx.org@4.0.0-beta4/dist/htmx.min.js integrity=sha384-aWZK1NtOs/aWb/+YZdTM8q2JkWEshlMc9mgZ189numT9bwFhyAyYEoO4nO/2dTXt crossorigin=anonymous></script> If the content downloaded from the external source doesn’t match the expected hash, the browser blocks it from loading. This is a great defense against the target URL changing its contents, executing a supply chain attack against your visitors. (Generally, I recommend you avoid loading anything from a third-party URL, per Reasons to avoid Javascript CDNs. But sometimes, you gotta do what you … -
Issue 339: Early Bird DjangoCon US Tickets Ending Soon
News DjangoCon US 2026: Early Bird Tickets End May 31st! Early bird ticket sales for DjangoCon US 2026 end on May 31, 2026, with discounted pricing available. The conference runs five days at Voco Chicago Downtown and includes community-selected talks plus Django contribution sprints. Wagtail CMS News Wagtail Space NL - June 12 A full-day conference in Rotterdam, The Netherlands on Wagtail, with talks covering a range of topics, lightning talks, hallway discussions, and more. Updates to Django Today, "Updates to Django" is presented by Pradhvan from Djangonaut Space! 🚀 Last week we had 16 pull requests merged into Django by 10 different contributors. This week's Django highlights: 🦄 Django's built-in error pages, admin, and registration templates now include the CSP nonce on <script>, <link>, and <style> elements when available. (#36825) Fixed HttpResponse.reason_phrase to raise BadHeaderError when set to a value containing control characters. (#37100) Fixed Query.clear_ordering() to recursively clear ordering on combined queries, preventing errors when using __in lookups on nested union() querysets. (#37097) Admin change form actions now use ModelAdmin.get_queryset(), ensuring custom annotations and filtering are consistently applied to form actions. (#37117) If you haven't already, give Django 6.1 alpha 1 a spin and report anything suspicious to … -
Please add an RSS Feed to Your Site
Why syndication feeds are having a moment in 2026. -
Mentoring GSoC 2026: Experimental Flags
Over the last couple of weeks, Google Summer of Code (GSoC) has started for 2026, I think along side my mentee, I will blog about it as we progress through the project. So far, there has been a kick-off meeting with all participants and I have started to chat with my mentee (Praful) about the first steps of our project - Experimental Flags. he has posted to the Forum about the project, asking for feedback on what we want from the project. Before I say anymore, please go and pitch your opinion and any ideas you may have, the more we have to work with the better! We need you! What set's this project apart from GSoC projects in recent years is that we have yet to have an agreed solution in place that 'just' needs implementing. So my initial guide will be to focus on consensus gathering and documentation. But being a GSoC project with a limited time availabilty, I do feel the need to push the process forward at a pace for consensus that is faster than the normal Django pace. That said, the potential for this project is wide and expansive, currently with a lot of open … -
Code linearization
You can find plenty of articles about design — where and how to use SQL, NoSQL, message queues, Redis, VMs, and so on. Almost nobody writes about tactics: the actual coding. It borders on style, but it isn’t just style. This is the first article in a series on tactics I use day to day. Highly opinionated — I don’t expect you to follow it. Look, chuckle, think about it, and use what you like. -
Issue 338: Django 6.1 alpha 1 released
News Django 6.1 alpha 1 released Django 6.1 alpha 1 has been released, signaling the next round of framework updates headed your way. Plan a quick test run in a staging environment so you can catch compatibility issues early as 6.1 develops. Wagtail CMS News Wagtail accessibility statistics for GAAD 2026 Wagtail accessibility statistics for GAAD 2026 give a focused look at how well your CMS setup supports real accessibility needs. Use the figures to spot gaps and prioritize the most impactful improvements. Updates to Django Today, "Updates to Django" is presented by Pradhvan from Djangonaut Space! 🚀 Last week we had 16 pull requests merged into Django by 11 different contributors - including 2 first-time contributors! Congratulations to somi and Kasey for having their first commits merged into Django - welcome on board! 🥳 This week's Django highlights: 🦄 Deprecated QuerySet.select_related() with no arguments, along with the corresponding admin options that relied on this implicit form. (#36593) RedirectView now supports a preserve_request attribute, letting redirects keep the original HTTP method and body by returning 307 or 308 instead of 302 or 301. (#37062) Admin actions are now also shown on the object edit page, allowing bulk actions to be … -
Utrecht (NL) Python meetup summaries
I made summaries at the 4th PyUtrecht meetup (in Nieuwegein, at Qstars this time). Qstars IT and open source - Derk Weijers Qstars IT hosted the meeting. It is an infra/programming/consultancy/training company that uses lots of Python. They also love open source and try to sponsor where possible. One of the things they are going to open source (next week) is a "cable thermal model", a calculation method to determine the temperature of underground electricity cables. The Netherlands has a lot of net congestion... So if you can have a better grid usage by calculating the real temperature of cables instead of using an estimated temperature, you might be able to increase the load on the cable without hitting the max temperature. Coupled with "measurement tiles" that actually monitor the temperature. They build it for one of the three big electricity companies in the Netherlands and got permission to open source it so that the other companies can also use it. They hope it will have real impact. He explained an open source project he started personally: "the space devs". Integrating rocket launch data and providing an API. Now it has five core developers (and got an invitation to the … -
My PyCon US 2026
A timeline of my PyCon US 2026 journey, in Long Beach (US), told through the Mastodon posts I shared along the way. -
Mercurial Mirror For Django 6.1 Branch
The 6.1 alpha 1 was just released, and I’ve set up the mirror for 6.1. For the record, those mirrors are read-only, and aimed at production (aka “I want an easy way to update Django on servers “), not development (aka “i wanna commit”). the URL (both web browsing and mercurial cloning) is https://freehackers.org/mirrors/django-6.1-production/the list […]