Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
Django News - Happy Holidays and 95% there! - Dec 26th 2025
News Hitting the Home Stretch: Help Us Reach the Django Software Foundation's Year-End Goal! Since last week, the Django Software Foundation has reached 95% of its goal, and I appreciate your consideration in helping it meet the remaining 5%. djangoproject.com DjangoCon Europe - Call for Proposals The Call for Proposals (CFP) for DjangoCon Europe 2026 is officially open! This event will be in Athens, Greece, from April 15–19, 2026. Submission deadline: Sunday, February 8, 2026 (end of day) djangocon.eu Updates to Django Today, "Updates to Django" is presented by Raffaella from Djangonaut Space! 🚀 Last week we had 16 pull requests merged into Django by 15 different contributors - including 4 first-time contributors! Congratulations to H. White, Krishnaprasad MG, Jonathan Biemond, and Nilesh Pahari for having their first commits merged into Django - welcome on board! News in Django 6.0: Fixed a regression that prevented changing the name of a ManyToManyField from taking effect when applying migrations. (#36800) Fixed a regression where querystring mishandled multi-value QueryDict keys, both by only preserving the last value and by incorrectly handling None values (#36783). News in Django 6.1: The m2m_changed signal now receives a raw argument. parse_duration() now supports ISO 8601 durations expressed … -
Happy Holidays and 95% there!
News Hitting the Home Stretch: Help Us Reach the Django Software Foundation's Year-End Goal! Since last week, the Django Software Foundation has reached 95% of its goal, and I appreciate your consideration in helping it meet the remaining 5%. DjangoCon Europe - Call for Proposals The Call for Proposals (CFP) for DjangoCon Europe 2026 is officially open! This event will be in Athens, Greece, from April 15–19, 2026. Submission deadline: Sunday, February 8, 2026 (end of day) Updates to Django Today, "Updates to Django" is presented by Raffaella from Djangonaut Space! 🚀 Last week we had 16 pull requests merged into Django by 15 different contributors - including 4 first-time contributors! Congratulations to H. White, Krishnaprasad MG, Jonathan Biemond, and Nilesh Pahari for having their first commits merged into Django - welcome on board! News in Django 6.0: Fixed a regression that prevented changing the name of a ManyToManyField from taking effect when applying migrations. (#36800) Fixed a regression where querystring mishandled multi-value QueryDict keys, both by only preserving the last value and by incorrectly handling None values (#36783). News in Django 6.1: The m2m_changed signal now receives a raw argument. parse_duration() now supports ISO 8601 durations expressed in weeks … -
From Bootcamp to Project Manager - Keanya Phelps
🔗 LinksBehind the Curtain as a Conference Chair blog postDjangoCon US Conference Chair Opening Remarks and Closing Remarks at DjangoCon USPG Data 2026 ConferenceDjangoCon US: Call for Venue Proposals 2027-28📦 Projectsdjango-crontask📚 BooksJust Use Postgres bookUntil the End of Time book🎥 YouTubeYouTube Channel: @djangochatSponsorThis episode was brought to you by Buttondown, the easiest way to start, send, and grow your email newsletter. New customers can save 50% off their first year with Buttondown using the coupon code DJANGO. -
My 2026 year in review
As I prepared this post I realised I a lot more had happened this year than I thought, so without further a do here are the highlights I remember. The new year started strong with me achieving my goal of writing a blog post every week day for a year. Since then I have scaled it back to approxmiately weekly, but there have been longer gaps over holidays or when worked was a bit too busy. It was a definite bonus to get 9 of my articles featured in Django News this year! The other content production I have been doing this year is a short podcast called "In Progress" which is a public-ish show about what I am working on week to week, I do plan to make this public at some point! My big focus this year has been building an initial build for a startup I am co-founding. It's in the financial services space and I have a deadline for the end of January 2026. It's taken much longer than I would have liked, partly due to the table stakes features that were required, partly due to only being able to work part-time on it for most … -
Django News - New Django Software Foundation Board and Year-End Fundraiser - Dec 19th 2025
News Hitting the Home Stretch: Help Us Reach the Django Software Foundation's Year-End Goal! Django Software Foundation requests year-end donations to close a $300,000 fundraising goal, supporting an expanded Fellows program, security work, releases, and community events. djangoproject.com Introducing the 2026 DSF Board Django Software Foundation announced the 2026 board and officers, welcomed the newly elected directors, thanked the outgoing members, and linked the board minutes and contact information. djangoproject.com DjangoCon US 2026 CFP is open! DjangoCon US 2026 will take place September 14–18 in Chicago (talks September 14–16, sprints September 17–18), and the Call for Proposals is open now with a submission deadline of March 16, 2026 at 11:00 AM CDT. pretalx.com PEP 8107 – 2026 Term Steering Council election The results of the 2026 Python Steering Council election were published in PEP 8107, and the five winners are Pablo Galindo Salgado, Savannah Ostrowski, Barry Warsaw, Donghee Na, and Thomas Wouters. Congratulations to all of them on being elected to guide Python’s development for the coming term. python.org Releases Python 3.15.0 alpha 3 Python 3.15.0 alpha 3 is now available as an early developer preview, highlighting features like a new statistical sampling profiler, UTF-8 as the default encoding, a … -
New Django Software Foundation Board and Year-End Fundraiser
News Hitting the Home Stretch: Help Us Reach the Django Software Foundation's Year-End Goal! Django Software Foundation requests year-end donations to close a $300,000 fundraising goal, supporting an expanded Fellows program, security work, releases, and community events. Introducing the 2026 DSF Board Django Software Foundation announced the 2026 board and officers, welcomed the newly elected directors, thanked the outgoing members, and linked the board minutes and contact information. DjangoCon US 2026 CFP is open! DjangoCon US 2026 will take place September 14–18 in Chicago (talks September 14–16, sprints September 17–18), and the Call for Proposals is open now with a submission deadline of March 16, 2026 at 11:00 AM CDT. PEP 8107 – 2026 Term Steering Council election The results of the 2026 Python Steering Council election were published in PEP 8107, and the five winners are Pablo Galindo Salgado, Savannah Ostrowski, Barry Warsaw, Donghee Na, and Thomas Wouters. Congratulations to all of them on being elected to guide Python’s development for the coming term. Releases Python 3.15.0 alpha 3 Python 3.15.0 alpha 3 is now available as an early developer preview, highlighting features like a new statistical sampling profiler, UTF-8 as the default encoding, a new PyBytesWriter C API, … -
More adventures in building template components in Django
I discovered a new pattern in using one of the latest features from Django 6.0, template-partials. I probably need to give Claude some credit along with Tailwind Plus for the initial HTML. Earlier this week I was building out a modal pattern for the latest project I am building. You click a button, a modal pops up and loads a form via HTMX. Then submit the form and modal closes with the response triggering other HTMX updates on the page. I was building this out in tandem with Claude Code, with the starting point being a modal from Tailwind Plus which I thought only included the modal, but they also included the button to trigger the modal as well. Well the AI took this and ran with and essentially ended up with a Django template that looks like this: {% partialdef trigger %} <button hx-get...>...</button> {% endpartialdef trigger %} {% partialdef modal %} <dialog> <form> ... </form> </dialog> {% endpartialdef modal %} I don't think I would have ever thought to have included the button section as a partial in this context, but I like the results since both can be used with the include tag at different points and … -
Rich text editors: How restrictive can we be?
Rich text editors: How restrictive can we be? How restrictive should a rich text editor be? It’s a question I keep coming back to as I work on FeinCMS and Django-based content management systems. I published the last blog post on django-prose-editor specifically in August 2025, Menu improvements in django-prose-editor. The most interesting part of the blog post was the short mention of the TextClass extension at the bottom which allows adding a predefined list of CSS classes to arbitrary spans of text. In the meantime, I have spent a lot of time working on extensions that try to answer this question: the TextClass extension for adding CSS classes to inline text, and more recently the NodeClass extension for adding classes to nodes and marks. It’s high time to write a post about it. Rich Text editing philosophy All of this convinced me that offering the user a rich text editor with too much capabilities is a really bad idea. The rich text editor in FeinCMS only has bold, italic, bullets, link and headlines activated (and the HTML code button, because that’s sort of inevitable – sometimes the rich text editor messes up and you cannot fix it other than … -
Django News - DjangoCon Europe 2026 CFPs - Dec 12th 2025
News DjangoCon Europe 2026: Call for Proposals Submit talk proposals for DjangoCon Europe 2026 in Athens by February 8, 2026, to present technical or community-focused Django and Python topics. djangocon.eu Python Insider: Python 3.14.2 and 3.13.11 are now available! Python 3.14.2 and 3.13.11 release expedited maintenance updates fixing regressions in multiprocessing, dataclasses, regex and insertdict plus security fixes including CVE-2025-12084. blogspot.com Django Software Foundation Django Code of Conduct Transparency Report 2025 The Django Software Foundation Code of Conduct working group published a 2025 transparency report detailing four reports, two suspensions, process changes, and new liaisons. djangoproject.com Online Community Working Group GitHub repo and project Django Online Community Working Group launched a GitHub repository and project to centralise, track, and triage suggestions across Django's online platforms. djangoproject.com Django Fellow Reports Fellow Report - Natalia Big week. I issued security releases early in the week, and then the Django 6.0 final release right after. Getting both out the door smoothly took most of my focus, and it felt good to see them completed. The flow of LLM driven contributions is becoming hard to ignore, across PRs, tickets, and even security reports. Skynet would be proud (?). This week was also heavy on … -
DjangoCon Europe 2026 CFPs
News DjangoCon Europe 2026: Call for Proposals Submit talk proposals for DjangoCon Europe 2026 in Athens by February 8, 2026, to present technical or community-focused Django and Python topics. Python Insider: Python 3.14.2 and 3.13.11 are now available! Python 3.14.2 and 3.13.11 release expedited maintenance updates fixing regressions in multiprocessing, dataclasses, regex and insertdict plus security fixes including CVE-2025-12084. Django Software Foundation Django Code of Conduct Transparency Report 2025 The Django Software Foundation Code of Conduct working group published a 2025 transparency report detailing four reports, two suspensions, process changes, and new liaisons. Online Community Working Group GitHub repo and project Django Online Community Working Group launched a GitHub repository and project to centralise, track, and triage suggestions across Django's online platforms. Wagtail CMS News Wagtail Wrapped 2025 Wagtail released four updates in 2025, including a 7.0 LTS aligned with Django, improved editor UX, AI package features, and autosave roadmap for 2026. Up next on the roadmap Wagtail 7.3 (Feb 2026) will add a StreamField block settings, content AI checks, model search enhancements, autosave draft, llms.txt docs to improve editor and developer workflows, and more! Django Fellow Reports Fellow Report - Natalia Big week. I issued security releases early in … -
Django 6.0 - Natalia Bidart
Django 6.0 Released blog post and release notesDeprecations Don't Work for Python LibrariesDjango Forum - Should We Adjust Django's Versioning?django-repl and django-boltTemplate Fragments essay on HTMX.orgdjango-tasksWhat's New in Django 6.0 by Adam JohnsonDjangoCon Europe 2024 | Empowering Django with Background WorkersSponsorThis episode was brought to you by HackSoft, your development partner beyond code. From custom software development to consulting, team augmentation, or opening an office in Bulgaria, they’re ready to take your Django project to the next level! -
Hello world!
Welcome to WordPress. This is your first post. Edit or delete it, then start writing! -
Django: implement HTTP basic authentication
Previously, we covered bearer authentication within HTTP’s general authentication framework. In this post, we’ll implement basic authentication, where the client provides a username and password. To recap, HTTP’s general authentication framework defines a general scheme for authentication: Clients may provide an authorization request header that contains a credential. Servers validate the header and respond with either the requested resource or a 401 (Unauthorized) status code that includes a www-authenticate response header advertising what authentication schemes are supported. Basic authentication is an authentication scheme within the framework that browsers natively support. When accessing a page protected with basic authentication, browsers show a login prompt to the user, like this one in Firefox: After the user enters their credentials, the browser sends a new request with the authorization header set to the string Basic <credentials>, where <credentials> is a base64-encoded string of the form <username>:<password>. The server can then validate the credentials and respond accordingly. Basic authentication is not the best user experience, as the browser login dialog cannot be styled and password managers cannot autofill it. It also requires some security considerations, as the credentials are sent with every request to the protected resource, increasing the risk of exposure, but if … -
Weeknotes (2025 week 49)
Weeknotes (2025 week 49) I seem to be publishing weeknotes monthly, so I’m now thinking about renaming the category :-) Mosparo I have started using a self-hosted mosparo instance for my captcha needs. It’s nicer than Google reCAPTCHA. Also, not sending data to Google and not training AI models on traffic signs feels better. Fixes for the YouTube 153 error Simon Willison published a nice writeup about YouTube embeds failing with a 153 error. We have also encountered this problem in the wild and fixed the feincms3 embedding code to also set the required referrerpolicy attribute. Updated packages since 2025-11-04 django-sitemaps 2.0.2: Uploaded a new release which includes a wheel build. Rebuilding the wheel all the time when creating new container images was getting annoying. The code itself is unchanged. django-prune-uploads 0.3.1: The package now supports pruning a storage backed by django-s3-storage efficiently. I have also looked at django-prune-media but since the package uses the storage API instead of enumerating files using boto3 directly it’s unusably slow for my use case. feincms3-forms 0.6: Much better docs and a new way to reference individual form fields in custom templates. django-json-schema-editor 0.11: Switched from JSON paths to jmespath instances. Made the JSON … -
Django News - Django 6.0 released! - Dec 5th 2025
News Django 6.0 released Django 6.0 introduces template partials, a background task framework, Content Security Policy support, and a modern Email API based on EmailMessage. djangoproject.com 2026 DSF Board Election Results Jacob Kaplan-Moss, Priya Pahwa, and Ryan Cheley were elected to two year terms, joining continuing directors to form the 2026 DSF Board. djangoproject.com Releases Django security releases issued: 5.2.9, 5.1.15, and 4.2.27 Django issues security releases 5.2.9, 5.1.15, and 4.2.27, addressing a FilteredRelation SQL injection on PostgreSQL and an XML serializer DoS vulnerability. djangoproject.com Python 3.14.1 is now available! Python 3.14.1 is a maintenance release that adds deferred annotation evaluation, free-threaded support, an experimental JIT, and numerous bug fixes affecting Django performance and typing. python.org Python 3.13.10 is now available, too, you know! Python 3.13.10 is released as the tenth maintenance update since 3.13.9, delivering around 300 bug fixes, build improvements, and documentation updates. python.org Wagtail 7.2.1 Wagtail 7.2.1 delivers several performance and usability fixes for document and image listings, improves reference index efficiency, and includes minor maintenance updates. github.com Python Software Foundation Python Software Foundation News: Sovereign Tech Agency and PSF Security Partnership Sovereign Tech Agency funds €86,000 to PSF for CPython archive fuzz testing and PyPI account … -
Django 6.0 released!
News Django 6.0 released Django 6.0 introduces template partials, a background task framework, Content Security Policy support, and a modern Email API based on EmailMessage. 2026 DSF Board Election Results Jacob Kaplan-Moss, Priya Pahwa, and Ryan Cheley were elected to two year terms, joining continuing directors to form the 2026 DSF Board. Releases Django security releases issued: 5.2.9, 5.1.15, and 4.2.27 Django issues security releases 5.2.9, 5.1.15, and 4.2.27, addressing a FilteredRelation SQL injection on PostgreSQL and an XML serializer DoS vulnerability. Python 3.14.1 is now available! Python 3.14.1 is a maintenance release that adds deferred annotation evaluation, free-threaded support, an experimental JIT, and numerous bug fixes affecting Django performance and typing. Python 3.13.10 is now available, too, you know! Python 3.13.10 is released as the tenth maintenance update since 3.13.9, delivering around 300 bug fixes, build improvements, and documentation updates. Wagtail 7.2.1 Wagtail 7.2.1 delivers several performance and usability fixes for document and image listings, improves reference index efficiency, and includes minor maintenance updates. Python Software Foundation Python Software Foundation News: Sovereign Tech Agency and PSF Security Partnership Sovereign Tech Agency funds €86,000 to PSF for CPython archive fuzz testing and PyPI account recovery using OAuth 2.0 OIDC to … -
Django: what’s new in 6.0
Django 6.0 was released today, starting another release cycle for the loved and long-lived Python web framework (now 20 years old!). It comes with a mosaic of new features, contributed to by many, some of which I am happy to have helped with. Below is my pick of highlights from the release notes. Upgrade with help from django-upgrade If you’re upgrading a project from Django 5.2 or earlier, please try my tool django-upgrade. It will automatically update old Django code to use new features, fixing some deprecation warnings for you, including five fixers for Django 6.0. (One day, I’ll propose django-upgrade to become an official Django project, when energy and time permit…) Template partials There are four headline features in Django 6.0, which we’ll cover before other notable changes, starting with this one: The Django Template Language now supports template partials, making it easier to encapsulate and reuse small named fragments within a template file. Partials are sections of a template marked by the new {% partialdef %} and {% endpartialdef %} tags. They can be reused within the same template or rendered in isolation. Let’s look at examples for each use case in turn. Reuse partials within the same … -
Safe Django database migrations on Coolify
Deploying Django on Coolify has been fantastic so far: automatic builds, atomic releases, ephemeral containers, and simple scaling. In a previous article I explained how I set up my Django projects in Coolify, including the fact that migrations run as part of the build step. This works great for most migrations: failures abort the build, no partial deploys, no surprises. But it breaks down for one specific class of migrations: schema-destructive migrations, i.e. migrations that remove fields, drop tables, rename columns, or otherwise make the existing running code incompatible with the current database schema. Coolify builds your new container, applies the migrations, and only afterwards starts replacing the running container with the new one. During that in-between period (usually 1–2 minutes depending on your image size) your old Django container is still running code that expects the old schema. If a column has just been removed… boom: 500 errors for users until the new container becomes healthy and takes over. Why you can’t just move the migration step Your first instinct might be to change when the migrations run. Let’s look at some alternatives and why they don’t solve the root problem. Strategy A: the post-deploy hook You could remove … -
Safe Django migrations without server errors
One of the best features of modern container-based deployment platforms (Coolify included) is that they give you zero downtime rolling updates out of the box. When you push code, a new image is built, migrations run, and traffic only shifts to the new container when it’s healthy. However, this convenience creates a hidden trap for Django developers. Because Coolify performs a rolling update, there is a window of time (usually 1–2 minutes) where both the old and new versions of your application are running simultaneously against the same database. This works fine if you are just adding a new table. But if you run a destructive migration, like removing a field or renaming a column, your deployment becomes a race condition. The new container runs the migration, the database schema changes, and your old container (which is still serving live traffic) immediately starts throwing 500 errors because it’s trying to query a column that no longer exists. This isn’t a limitation of Coolify; it is a fundamental constraint of rolling deployments. Heroku, Render, Fly.io, ECS, Kubernetes — anything that swaps containers while the old version is still serving traffic has the same constraint. You cannot fix this by changing where … -
Django News - Sales and AI in the Real World - Nov 28th 2025
News Python Black Friday & Cyber Monday sales (2025) More Black Friday and Cyber Monday deals for Python and Django developers! LearnDjango has 50% off courses too! treyhunner.com Django Software Foundation DSF member of the month - Akio Ogasahara Akio Ogasahara, DSF member of the month, contributes extensive Japanese documentation translation, advocates Django admin for operations and highlights Django security alongside AI assisted development. djangoproject.com Python Software Foundation PyPI and Shai-Hulud: Staying Secure Amid Emerging Threats PyPI warns developers about the Shai-Hulud npm supply chain campaign, revoking exposed tokens and recommending trusted publishers, CI workflow audits, and token rotation. pypi.org Wagtail CMS News Wagtail 7.2.1 Wagtail shipped several fixes that improve userbar previews, document and image handling, search stability, and reference index performance, along with a small search test cleanup. github.com Sponsored Link 1 Sleep tight with HackSoft and our Django services! While you recharge, we keep your software running smoothly - secure, stable, and ready for tomorrow. We are HackSoft - your Django development partner, beyond code. Learn more! hacksoft.io Articles Django: implement HTTP bearer authentication Shows how to implement simple single token HTTP Bearer authentication in Django views with secure compare, unit tests, and a reusable decorator. adamj.eu … -
Sales and AI in the Real World
News Python Black Friday & Cyber Monday sales (2025) More Black Friday and Cyber Monday deals for Python and Django developers! LearnDjango has 50% off courses too! Django Software Foundation DSF member of the month - Akio Ogasahara Akio Ogasahara, DSF member of the month, contributes extensive Japanese documentation translation, advocates Django admin for operations and highlights Django security alongside AI assisted development. Python Software Foundation PyPI and Shai-Hulud: Staying Secure Amid Emerging Threats PyPI warns developers about the Shai-Hulud npm supply chain campaign, revoking exposed tokens and recommending trusted publishers, CI workflow audits, and token rotation. Wagtail CMS News Wagtail 7.2.1 Wagtail shipped several fixes that improve userbar previews, document and image handling, search stability, and reference index performance, along with a small search test cleanup. Sponsored Link 1 Sleep tight with HackSoft and our Django services! While you recharge, we keep your software running smoothly - secure, stable, and ready for tomorrow. We are HackSoft - your Django development partner, beyond code. Learn more! Articles Django: implement HTTP bearer authentication Shows how to implement simple single token HTTP Bearer authentication in Django views with secure compare, unit tests, and a reusable decorator. Building a Translations Dashboard In Wagtail … -
Stop scrolling the admin apps
Below is a tiny javascript snippet to add to the end of the admin/base.html. This little snippet with ensure the current app in the left hand navigation is always at the top of the viewport when navigating between admin pages. Very handy when you have lots of apps and models! <script> const current_app_nav = document.querySelector(".current-app"); current_app_nav.scrollIntoView(true, {block: 'center', container: 'nearest', inline: 'nearest'}); window.scrollBy(0, -100); </script> Enjoy! -
AI in the Real World - Marlene Mhangami & Tim Allen
Marlene’s personal website and Tim’sKeynote: Django Reimagined For The Age of AI by Marlene at DjangoCon US and GitHub repoWhat a Decade! by Tim at DjangoCon USDjango Girls OfflineSponsorThis episode was brought to you by HackSoft, your development partner beyond code. From custom software development to consulting, team augmentation, or opening an office in Bulgaria, they’re ready to take your Django project to the next level! -
Django and password manager SDKs
In my current project, I'm going to be storing a fair number of different API credentials, first those that we own and then plenty of OAuth credentials from our customers. Today I am pondering the first scenario and wondering what how I can store these securely and with the prinicple of least privilege. Currently I'm using django-allauth's socialaccount models to store these details, it's a nice abstraction and I can add relationships from my models to the models allauth provides to dynamically select the appropriate credentials I need to access the relevant API. However the secrets are stored in plain CharFields and are accessible from the admin. That's fine for now, but soon that's not going to fly. I could store these as environment variables, but this goes against the current dynamic design of holding configuration in the database, which allows me to switch API clients and tokens without a code deploy. Last night I was listening to a 1password advert about their SDK which goes beyond a CLI interface allowing developers to interact with their platform. Bitwarden (my password manager of choice) also has this capability and this got me wondering, what would Django integration to these providers look … -
Django: implement HTTP bearer authentication
HTTP has a general authentication framework that defines a pattern into which various authentication schemes can fit. Clients may provide an authorization request header that contains a credential. If authorization is missing or invalid, the server may respond with a 401 (Unauthorized) status code, including a www-authenticate header advertising what authentication schemes are supported. Otherwise, the server can respond with the authenticated resource. The simplest authentication scheme in this framework is called Bearer, where the client needs to provide a valid token (typically a randomly generated string) in authorization. Bearer authentication is commonly used in APIs, where it’s convenient to provide a single token rather than a username and password. Django-based API frameworks provide built-in support for Bearer authentication, such as Django REST Framework’s TokenAuthentication or django-ninja’s authentication layer. But for simple cases, such frameworks can be a bit heavyweight, and you might want to implement Bearer authentication yourself, which only takes a few lines of code. Here’s an example implementing single-token Bearer authentication for a Django view returning JSON data: import os import secrets from http import HTTPStatus from django.http import JsonResponse SECRET_STUFF_TOKEN = os.environ.get("SECRET_STUFF_TOKEN", "") def secret_stuff(request): authorization = request.headers.get("authorization", "") if not SECRET_STUFF_TOKEN or not secrets.compare_digest( f"Bearer …