Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
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. -
Weeknotes (2026 week 17)
Weeknotes (2026 week 17) I published the last entry near the beginning of March. I’m really starting to see a theme in my Weeknotes publishing schedule. Releases since the first weeks of March I’m trying out a longer-form version of those notes here than in the past. I think it’s worth going into some detail and not just listing releases with half a sentence each. feincms3-sites and feincms3-language-sites I released updates to feincms3-sites and feincms3-language-sites fixing the same issue in both projects: When an HTTP client didn’t strip the default ports :80 (for HTTP) or :443 (for HTTPS) from a request, finding the correct site would fail. Browsers generally strip the port already, but some other HTTP clients do not. django-tree-queries As I wrote elsewhere I closed many issues in the repositories, mostly documentation issues but also some bugs. {% recursetree %} should now work properly and not cache old data anymore, using the primary key in .tree_fields() now raises an intelligible error, and I also fixed a bug with table quoting when using django-tree-queries with the not yet released Django 6.1+. feincms3-cookiecontrol feincms3-cookiecontrol not only offers a cookie consent banner (which actually supports only embedding tracking scripts when users … -
How France Ditched Microsoft - Samuel Paccoud
🔗 Links La Suite numérique on GitHub La Suite website Samuel on LinkedIn TechEmpower Benchmarks being sunsetted 📦 Projects django-live-translations django-bolt TechEmpower Benchmarks 📚 Books The Mikado Method The Girl with the Dragon Tattoo A Confederacy of Dunces 🎥 YouTube YouTube Channel: @djangochat 🤝 Sponsor This episode is brought to you by Six Feet Up, the Python, Django, and AI experts who solve hard software problems. Whether it’s scaling an application, deriving insights from data, or getting results from AI, Six Feet Up helps you move forward faster. See what’s possible at https://sixfeetup.com/. -
PyCon US 2026 Recap
Seven days of sponsor booth, talks, sprints, and hallway chats. -
Issue 337: Django Developers Survey 2026
Will and Jeff are at PyCon US in Long Beach, California this week. Drop by the Django Software Foundation booth or the JetBrains booth and say hello. News Django Developers Survey 2026 The Django Software Foundation is once again partnering with JetBrains to run the 2026 Django Developers Survey 📊 Help us better understand how Django is being used around the world and guide future technical and community decisions. DSF member of the month - Bhuvnesh Sharma Bhuvnesh is a Django contributor since 2022 and a Google Summer of Code (GSoC) participant in 2023 for Django. He is now a mentor and an admin organizer for GSoC for the Django organization, as well as the founder of Django Events Foundation India (DEFI) and DjangoDay India conference. Announcing the Google Summer of Code 2026 contributors for Django Google Summer of Code 2026 contributors have been announced for Django, listing the developers who will be working on projects as part of the program. If you are following Django’s next wave of community work, this is the roll-up of who’s joining and what to watch for. Releases Python 3.14.5 is out! Python 3.14.5 is now available, bringing the latest point release in the … -
Deploy on Day One - Calvin Hendryx-Parker
🔗 Links SixFeetUp Careers getscaf, copier, tilt A CTOs Guide to AI Coding Assistants kind, nix, spec-kit Figma make 📦 Projects django-mail-auth disposable-email-domains turnstile django-modern-rest 📚 Books London Review of Books Big Panda & Tiny Dragon by James Norbury Universal Principles of Typography by Elliot Jay Stocks 🎥 YouTube YouTube Channel: @djangochat 🤝 Sponsor This episode is brought to you by Six Feet Up, the Python, Django, and AI experts who solve hard software problems. Whether it’s scaling an application, deriving insights from data, or getting results from AI, Six Feet Up helps you move forward faster. See what’s possible at https://sixfeetup.com/. -
stream-json and the side quests
How a slow first cut, a surprising benchmark, and a tour through V8’s regex engine landed five small libraries on npm that still earn their keep a decade later. -
Improving First Byte and Contentful Paint on a Django Website
Recently I have been experimenting with http streaming and realized how it can improve page performance. If you come from the PHP world, you might know the command flush(). It immediately sends to the visitor what has been echoed to the buffer, and doesn't wait for the full page to be rendered on the server side. That allows the browser to start rendering the website before the whole document is rendered on the server and transferred. On the other hand, the usual Django HttpResponse renders the whole HTML document on the server first, and only then sends it to the visitor. So the initial HTML document rendering is always the bottleneck for the full page load. Here comes StreamingHttpResponse, which can be used to mimic what flush() does in PHP. HttpResponse vs. StreamingHttpResponse in Action When using a normal HttpResponse, the HTML document is first rendered on the server side, then sent to the browser, then static files are downloaded in parallel if possible, and lastly rendering in the browser happens. When you use StreamingHttpResponse, you can send the <head> and the content above the fold as the first part of the document, so that static files can be located … -
Issue 336: Google Summer of Code 2026 Contributors Announced
News Announcing the Google Summer of Code 2026 contributors for Django After receiving over 200 proposals from contributors across the world, four were selected for this year's GSOC batch. Django security releases issued: 6.0.5 and 5.2.14 Three CVE-level security issues fixed. As ever, updating to the latest version of Django is a highly-recommended security practice. Releases Python 3.14.5 release candidate Python 3.14.5 has a release candidate available, inviting testing before the final cut. Watch for any regressions or packaging issues while you validate your apps and dependencies against the RC. 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 15 different contributors - including 4 first-time contributors! Congratulations to Raoni Timo de Castro Cambiaghi, Anna Makarudze 🚀 , Fashad Ahmed, and Tilda Udufo for having their first commits merged into Django - welcome on board! 🥳 This week's Django highlights: 🦄 FilePathField now has a set_choices() method that allows refreshing directory choices on a per-request basis by calling it in a form's __init__(). (#16429) Task and TaskResult instances can now be pickled by serializing functions as dotted import paths and reconstructing them during … -
PyGrunn: layered architecture - Mike Huls
(One of my summaries of the 2026 one-day PyGrunn conference in Groningen, NL). Full title: layered architecture for readable, robust, and extensible apps. Note: there's a related article on his own website :-) Layered architecture resonates with people that make okay applications: their application do what they need to do. But once people start asking for changes, they get nervous. There might be huge functions. Or there might be no tests, "as it takes too much time to spin up the database". Brittle applications. Small changes are disproportionally expensive. The goal of this talk: create apps that are readable, robust and extensible. By using the principle of separating everything in layers with a specific responsibility. It is not a one-size-fits-all solution: you have to adapt it to your situation. The layers that he proposes: Interface: how the ouside world calls your application. An API or UI. Infrastructure and Repository: your contact with the outside world (like a database). Infrastructure is tools. A http client. A mail sender. Repository: persistence. SQL queries, caches. The aim is to decouple the rest of the system from db/cache/etc. Application: heart of your system, orchestrating the business logic. The Interface talks to the Application layer, … -
PyGrunn: how to sore and route your (physical) mail - Bart Dorlandt
(One of my summaries of the 2026 one-day PyGrunn conference in Groningen, NL). Full title: how to store and route your (physical) mail like a pro - personal edition. How do you deal with your mail? Your physical mail? How do you store it? If the tax people want to have some information, can you find it, for instance? Bart's motto is there must be a better way. So what is the pragmatic approach to better physical mail handling? A mail handling system that is flexible, automated, searchable and easy to use. He discovered paperless-ngx, an open source document management system that allow you to store, organize and search your documents. Web interface, api, it can also read emails (via the "gotenburg" plugin). It can watch folders for new docs to process. It has features for structuring, self-improving (without AI). Tags. And you can have workflows. Nice. Documents can go to Paperless. But he still has his bookkeeping system (he has his own company). And the bookkeeper wants emails with documents that are in Paperless. Can he improve this? For instance for receipts. He didn't want to scan all of them to PDF. And regular phone cameras don't produce PDFs. … -
PyGrunn: introducing httpxyz: forking a top-100 Python package - Michiel Beijen
(One of my summaries of the 2026 one-day PyGrunn conference in Groningen, NL). Years ago he listened to the "corecursive" podcast (recommended by Michiel), the one where Yann Collet got interviewed. He's the author of the LZ4 and zstandard (zstd) compression algorithm. In 2016 zstandard was released. In 2017 it was used in the linux kernel. Since 2020 it is one of the official formats in zipfiles. And in 2025 it got added to the Python standard library in version 3.14. requests is one of the most popular Python libraries. httpx has a similar API, but it is better. A top 100 pypy packages. Main advantages: HTTP/2 support and async support. He liked httpx a lot. And zstandard, too. But zstandard wasn't supported by httpx. All browsers support it, but not httpx. So he made a pull request in early 2024. It got merged! But there was no new release yet. The maintainer asked if he wanted to create a PR for the release. He did it and there was a new release. Hurray! Months later, a bug surfaced. He created a bugfix, but that wasn't merged and wasn't merged and wasn't merged. And there was no new release. And …