Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
DjangoCon 2025 The Attendee's Experience
This post is the second in a three-part series reflecting on DjangoCon US 2025. In this post, I’m reflecting on experiencing DjangoCon 2025 from the audience while serving as conference chair. -
Using tox to Test a Django App Across Multiple Django Versions
Recently, I developed a reusable Django app django-clearplaintext for normalizing plain text in Django templates. And to package and test it properly, I had a fresh look to Tox. Tox is the standard testing tool that creates isolated virtual environments, installs the exact dependencies you specify, and runs your test suite in each one — all from a single command. This post walks through a complete, working setup using a minimal example app called django-shorturl. The Example App: django-shorturl django-shorturl is a self-contained Django app with one model and one view. shorturl/models.py from django.db import models from django.utils.translation import gettext_lazy as _ class ShortLink(models.Model): slug = models.SlugField(_("slug"), unique=True) target_url = models.URLField(_("target URL")) created_at = models.DateTimeField(_("created at"), auto_now_add=True) class Meta: verbose_name = _("short link") verbose_name_plural = _("short links") def __str__(self): return self.slug shorturl/views.py from django.shortcuts import get_object_or_404, redirect from .models import ShortLink def redirect_link(request, slug): link = get_object_or_404(ShortLink, slug=slug) return redirect(link.target_url) shorturl/urls.py from django.urls import path from . import views urlpatterns = [ path("<slug:slug>/", views.redirect_link, name="redirect_link"), ] shorturl/admin.py from django.contrib import admin from .models import ShortLink admin.site.register(ShortLink) Project Layout django-shorturl/ ├── src/ │ └── shorturl/ │ ├── __init__.py │ ├── admin.py │ ├── models.py │ ├── views.py │ └── urls.py ├── … -
Django News - Google Summer of Code 2026 with Django - Feb 27th 2026
News Google Summer of Code 2026 with Django All the information you need to apply for Django's 21st consecutive year in the program. djangoproject.com Django Software Foundation DSF member of the month - Baptiste Mispelon Baptiste is a long-time Django and Python contributor who co-created the Django Under the Hood conference series and serves on the Ops team maintaining its infrastructure. He has been a DSF member since November 2014. You can learn more about Baptiste by visiting Baptiste's website and his GitHub Profile. djangoproject.com Wagtail CMS News The *1000 most popular* Django packages Based on GitHub stars and PyPI download numbers. wagtail.org Updates to Django Today, "Updates to Django" is presented by Johanan from Djangonaut Space! 🚀 Last week we had 11 pull requests merged into Django by 10 different contributors - including 4 first-time contributors! Congratulations to Saish Mungase, Marco Aurélio da Rosa Haubrich, 조형준 and Muhammad Usman for having their first commits merged into Django - welcome on board! This week's Django highlights: BuiltinLookup.as_sql() now correctly handles parameters returned as tuples, ensuring consistency with release note guidance for custom lookups. This avoids the need for developers to audit both process_lhs() and as_sql() for tuple/list resilience when subclassing … -
Freelancing & Community - Andrew Miller
🔗 Links Personal website GitHub, Mastodon, and LinkedIn In Progress podcast Hamilton Rock Comprehension Debt Builder Methods 📦 Projects django-prodserver django-health-check Online Community Working Group 📚 Books How to Build a LLM From Scratch by Sebastian Raschka World of Astrom Rob Walling books Jonathan Stark books David Kadavy books Manifesto of winning without pitching 🎥 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 sixfeetup.com. -
I Checked 5 Security Skills for Claude Code. Only One Is Worth Installing
I'm writing this in late February 2026. The skills ecosystem for Claude Code is moving fast, and the specific numbers and repos here will probably be outdated within a month. But the thinking still applies, so consider this a snapshot. If you're using Claude Code, you've probably wondered: can … Read now -
Django News - Contributor Covenant, Security Team Expansion, and Django 6.1 Updates - Feb 20th 2026
Introduction 📣 Sponsor Django News Reach 4,305 engaged Django developers with a single weekly placement. High open rates. Real clicks. Only two sponsor spots per issue. 👉 Book your spot django-news.com Django Software Foundation Plan to Adopt Contributor Covenant 3 as Django’s New Code of Conduct Django establishes a transparent community-driven process and advances the adoption of Contributor Covenant 3 as its Code of Conduct with staged policy updates. djangoproject.com Python Software Foundation Join the Python Security Response Team! Python core adds public governance and onboarding for the Python Security Response Team, enabling broader community nominations and coordinated CVE and OSV vulnerability remediation. blogspot.com Wagtail CMS News Open source AI we use to work on Wagtail Wagtail team recommends using open source AI models and inference providers like Scaleway, Neuralwatt, Ollama, and Mistral to power Wagtail AI integrations. wagtail.org Updates to Django Today, "Updates to Django" is presented by Raffaella from Djangonaut Space! 🚀 Last week we had 25 pull requests merged into Django by 13 different contributors - including 2 first-time contributors! Congratulations to 93578237 and Hossam Hassan for having their first commits merged into Django - welcome on board! News in Django 6.1: The new QuerySet.totally_ordered property returns … -
Django ORM Standalone⁽¹⁾: Querying an existing database
A practical step-by-step guide to using Django ORM in standalone mode to connect to and query an existing database using inspectdb. -
Deploying a project to the world
At the end of January, I was building out the deployment and infrastructure components for the startup project, so figured it would be an appropriate time to document how I think about these concepts at high level, perhaps they will help others. Generally I think about these processes two ways. First, is to create an environment, such as a virtual machine, PaaS, or container with a code spaced hole in it for your application, then create a process that moves the code from source control into that code spaced hole environment. This represents the initial deployment at a high level. Second, I think of deployments as pipelines. With the rise of infrastructure as code over the past decade, traditional CI/CD pipelines have become cyclical: code is pushed, deployed to production, and the cycle repeats. Infrastructure code is similar to application code, but its cadence is much slower. While a typical application deployment aims for multiple pushes per day—or at least a few per week—Infrastructure as Code (IaC) is usually deployed far less frequently, often annually. Early in a project, or when creating environments for feature branches, infrastructure deployments may occur more often, but they remain cyclical: a code push triggers … -
Adding analytics to my blog
Hey everyone, quick heads up: I’m adding analytics to the blog. Before you reach for your adblocker, hear me out. I’m using Umami, which is open source, privacy-respecting, and doesn’t use cookies. It doesn’t track you across sites, doesn’t collect personal data, and is fully open source so you can verify that yourself. On top of that, I’m self-hosting it on my own infrastructure, so the data never touches a third party. No Google Analytics, no Cloudflare analytics, no one else sees anything. I mainly want to know which posts are actually useful to people and which ones are just me yelling into the void. That’s it. If you have any questions or concerns, you know where to find me on the Contact page. -
AI and readable APIs
In the AI age the importance of readable APIs goes up, as this can mean the difference between not reading the code because it’s too much, and easily reading it to verify it is correct because it’s tiny. It’s been pretty clear that one of the superpowers of AI development is that it happily deals with enormous amounts of boilerplate and workarounds in a way that would drive a human insane. But we need to be careful of this, and notice that this is what is happening. High level APIs with steep learning curves (like iommi) are now just as easy to use as simpler APIs, since the cost of initial learning is moved from the human to the AI. Since we also invested heavily in great error messages and validating as much as possible up front, the feedback to the AI models is great. We’ve been banging the drum of “no silent fixes!” for a decade, and nothing kills human or AI productivity as silent failures. This is the time to focus our attention as humans to making APIs that are succinct and clear. It was vital before, but it’s growing in importance for every day. -
AI and readable APIs
In the AI age the importance of readable APIs goes up, as this can mean the difference between not reading the code because it’s too much, and easily reading it to verify it is correct because it’s tiny. It’s been pretty clear that one of the superpowers of AI development is that it happily deals with enormous amounts of boilerplate and workarounds in a way that would drive a human insane. But we need to be careful of this, and notice that this is what is happening. High level APIs with steep learning curves (like iommi) are now just as easy to use as simpler APIs, since the cost of initial learning is moved from the human to the AI. Since we also invested heavily in great error messages and validating as much as possible up front, the feedback to the AI models is great. We’ve been banging the drum of “no silent fixes!” for a decade, and nothing kills human or AI productivity as silent failures. This is the time to focus our attention as humans to making APIs that are succinct and clear. It was vital before, but it’s growing in importance for every day. -
Using Claude for spellchecking and grammar
On the pytest discord channel Sviatoslav mentioned a pull request with a bunch of spelling and grammar fixes. We had a discussion about the morality of not disclosing that it was an AI driven pull request up front, but what was pretty clear was that the quality was surprisingly high. Since I have a project with extensive documentation that I’ve spelled checked thoroughly this interested me. I write all the documentation with PyCharm which has built in spelling and grammar checks, so I was thinking it would be hard to find many errors. I sent this prompt to Claude: Go through the docs directory. Strings marked with # language: rst will be visible as normal text in the documentation. Suggest spelling, grammar, and language clarity improvements. Claude fires up ~8 sub agents and found a surprising amount of things. Every single change was good. A funny detail was that Claude ignored my request to only check the docs directory and found some issues in docstrings in the main source code. I can’t be angry about that :P The funniest mistake was that the docs had the word “underling” instead of “underlying” in one place (“feature set of the underling Query … -
djust 0.3.0 — "Phoenix Rising" 🔥
The biggest djust release yet with 20+ major features. Authentication, server-push, multi-tenancy, PWA support, AI tooling, automatic change tracking, CSS framework support, and security hardening make 0.3 production-ready. -
Django News - The Post-Heroku Django World - Feb 13th 2026
News Django Steering Council 2025 Year in Review They've been busy! A new-features repo, Community Ecosystem page, administrative bits, and more. djangoproject.com Read the Docs: Making search faster for all projects Read the Docs massively improved search latency by reindexing into multiple shards, tuning Elasticsearch queries and client, and fixing Django ORM N+1s and caching. readthedocs.com Releases Python Insider: Python 3.15.0 alpha 6 Python 3.15.0a6 preview highlights a new low-overhead sampling profiler, UTF-8 default encoding, JIT performance gains, unpacking in comprehensions, and typing improvements. blogspot.com Python Software Foundation Python is for Everyone Georgi from the PSF Diversity and Inclusion Working Group talks about the history of these efforts and most importantly, why it matters for all of us. georgiker.com Django Fellow Reports Fellow Report - Natalia 3 tickets triaged, 2 reviewed, 1 authored, security work, and other misc. djangoproject.com Fellow Report - Jacob 8 tickets triaged, 18 reviewed, 6 authored, 2 discussed, and other misc. djangoproject.com Wagtail CMS News Wagtail nominated for TWO CMS Critic Awards! 🏆 Wagtail CMS is up for some trophies. wagtail.org Updates to Django Today, "Updates to Django" is presented by Hwayoung from Djangonaut Space! 🚀 Last week we had 11 pull requests merged into Django … -
Use your Claude Max subscription as an API with CLIProxyAPI
So here’s the thing: I’m paying $100/month for Claude Max. I use it a lot, it’s worth it. But then I wanted to use my subscription with my Emacs packages — specifically forge-llm (which I wrote!) for generating PR descriptions in Forge, and magit-gptcommit for auto-generating commit messages in Magit. Both packages use the llm package, which supports OpenAI-compatible endpoints. The problem? Anthropic blocks OAuth tokens from being used directly with third-party API clients. You have to pay for API access separately. 🤔 That felt wrong. I’m already paying for the subscription, why can’t I use it however I want? Turns out, there’s a workaround. The Claude Code CLI can use OAuth tokens. So if you put a proxy in front of it that speaks the OpenAI API format, you can use your Max subscription with basically anything that supports OpenAI endpoints. And that’s exactly what CLIProxyAPI does. Your App (Emacs llm package, scripts, whatever) ↓ HTTP Request (OpenAI format) ↓ CLIProxyAPI ↓ OAuth Token (from your Max subscription) ↓ Anthropic API ↓ Response → OpenAI format → Your App No extra API costs. Just your existing subscription. Sweet! Why CLIProxyAPI and not something else? I actually tried claude-max-api-proxy first. … -
Improving Django - Adam Hill
🔗 LinksAdam’s Personal WebsiteDjango Brew podcastAdam’s GitHub profileRedesigned Django HomepageAllDjango.comnew-featuresdjango-api-frameworks📦 Projectsdjango-taskssuitenumeriqueDjango Rapid Architecture📚 BooksA River Runs Through It by Norman MacleanNightmare Alley filmLondon Review of Books & Le Monde Diplomatique🎥 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. -
Claude Code from the beach: My remote coding setup with mosh, tmux and ntfy
I recently read this awesome post by Granda about running Claude Code from a phone, and I thought: I need this in my life. The idea is simple: kick off a Claude Code task, pocket the phone, go do something fun, and get a notification when Claude needs your help or finishes working. Async development from anywhere. But my setup is a bit different from his. I’m not using Tailscale or a cloud VM. I already have a WireGuard VPN connecting my devices, a home server, and a self-hosted ntfy instance. So I built my own version, tailored to my infrastructure. Here’s the high-level architecture: ┌──────────┐ mosh ┌─────────────┐ ssh ┌─────────────┐ │ Phone │───────────────▶ │ Home Server │───────────────▶ │ Work PC │ │ (Termux) │ WireGuard │ (Jump Box) │ LAN │(Claude Code)│ └──────────┘ └─────────────┘ └──────┬──────┘ ▲ │ │ ntfy (HTTPS) │ └─────────────────────────────────────────────────────────────┘ The loop is: I’m at the beach, I type cc on my phone, I land in a tmux session with Claude Code. I give it a task, pocket the phone, and go back to whatever I was doing. When Claude has a question or finishes, my phone buzzes. I pull it out, respond, pocket it again. Development fits … -
Heroku Is (Finally, Officially) Dead
Analyzing the official announcement and reviewing hosting alternatives in 2026. -
It's time to leave Heroku
Back in the day Heroku felt like magic for small Django side projects. You pushed to main, it built and deployed automatically, and the free tier was generous enough that you could experiment without ever pulling out a credit card. For a long time, Heroku was the easiest way to get something live without worrying about servers, deployment scripts, or infrastructure at all. Every Python developer I knew recommended it. Sadly, that era is over. The slow decline The problems started piling up in 2022. In April, hackers stole OAuth tokens used for GitHub integration, gaining access to customer repositories. It later emerged that hashed and salted customer passwords were also exfiltrated from an internal database. Heroku forced password resets for all users. Their handling of the incident was widely criticized: they revoked all GitHub integration tokens without warning, breaking deploys for everyone, and communication was slow and vague. Then in August 2022, Heroku announced they would eliminate all free plans, blaming “fraud and abuse.” By November, free dynos, free Postgres databases, and free Redis instances were all gone. Look, I understand this wasn’t sustainable for the company. But they lost an entire generation of developers who had grown up … -
Django News - Django security releases issued: 6.0.2, 5.2.11, and 4.2.28 - Feb 6th 2026
News Django security releases issued: 6.0.2, 5.2.11, and 4.2.28 Django releases 6.0.2, 5.2.11, and 4.2.28 patch multiple security bugs, including PostGIS SQL injection, ASGI and Truncator denial of service, and timing and user enumeration. djangoproject.com Django Commons: We're recruiting new admins! Django Commons is recruiting new admins to manage projects, membership, governance, and infrastructure; apply via the Admin Interest Form by March 16, 2026, AOE. django-commons.org Recent trends in the work of the Django Security Team Django Security Team sees many repeat vulnerability variations, leading to consistent patching and consideration of rearchitecting areas to reduce low-impact reports. djangoproject.com Releases Django HealthCheck: Migration to v4.x Update django-health-check to v4 by removing sub-apps and HEALTH_CHECK settings, reverting test model migration, and using HealthCheckView with explicit checks. codingjoe.dev Python Insider: Python 3.14.3 and 3.13.12 are now available! Python 3.14.3 (and 3.13.12) was released with deferred annotations, free-threaded support, improved async tooling, and other features that impact Django development and deployment. blogspot.com Python Software Foundation Your Python. Your Voice. Join the Python Developers Survey 2026! This year marks the ninth iteration of the official Python Developers Survey. blogspot.com Wagtail CMS News An agent skill to upgrade your Wagtail site Wagtail published an agent skill … -
ModelRenderers, a possible new component to Django...
Towards the end of last year I was working with form renderers in my startup to provide a consistent interface for forms across the project. I also used template partials to override widgets, delivering consistent rendering all in one file, a nice win. This made me wonder what other common components in a project get rendered to HTML that could benefit from a single, reusable place to avoid repeating myself. Carlton's Neapolitan package already has this to some degree. There are two template tag types: one for object detail and one for object list. We also have FormRenderers in Django which already cascade from project down to an individual form, so perhaps we could apply the same logic to render models in a dry, configurable way rather than duplicating templates and logic. This made me wonder, could we have a python class whose role is to define how a model get's rendered? Let's be clear, we're not getting into serializers here and the validation or logic that comes with them, it's similar to the separation of Forms and FormRenders. I'm thinking that this idea allows the rendering of an object of list of objects in a template like so: {{ … -
Django's test runner is underrated
Every podcast, blog post, Reddit thread, and every conference talk seems to agree: “just use pytest”. Real Python says most developers prefer it. Brian Okken’s popular book calls it “undeniably the best choice”. It’s treated like a rite of passage for Python developers: at some point you’re supposed to graduate from the standard library to the “real” testing framework. I never made that switch for my Django projects. And after years of building and maintaining Django applications, I still don’t feel like I’m missing out. What I actually want from tests Before we get into frameworks, let me be clear about what I need from a test suite: Readable failures. When something breaks, I want to understand why in seconds, not minutes. Predictable setup. I want to know exactly what state my tests are running against. Minimal magic. The less indirection between my test code and what’s actually happening, the better. Easy onboarding. New team members should be able to write tests on day one without learning a new paradigm. Django’s built-in test framework delivers all of this. And honestly? That’s enough for most projects. Django tests are just Python’s unittest Here’s something that surprises a lot of developers: Django’s … -
Django News - Python Developers Survey 2026 - Jan 30th 2026
News Python Developers Survey 2026 This is the ninth iteration of the official Python Developers Survey. It is run by the PSF (Python Software Foundation) to highlight the current state of the Python ecosystem and help with future goals. Note that the official Django Developers Survey is currently being finalized and will come out hopefully in March or April. jetbrains.com The French government is building an entire productivity ecosystem using Django In a general push for removing Microsoft, Google and any US or other non-EU dependency, the French government has been rapidly creating an open source set of productivity tools called "LaSuite", in collaboration with the Netherlands & Germany. reddit.com Django Packages : 🧑🎨 A Fresh, Mobile-Friendly Look with Tailwind CSS As we announced last week, Django Packages released a new design, and Maksudul Haque, who led the effort, wrote about the changes. djangopackages.org Python Software Foundation Dispatch from PyPI Land: A Year (and a Half!) as the Inaugural PyPI Support Specialist A look back on the first year and a half as the inaugural PyPI Support Specialist. pypi.org Django Fellow Reports Fellows Report - Natalia By far, the bulk of my week went into integrating the checklist-generator into djangoproject.com, … -
Customizing error code for Cloudflare mTLS cert check
Summary The Bitwarden mobile app wipes its local cache when receiving an HTTP 403 error. By default, a WAF rule in a Cloudflare free account can only return a 403. This guide shows how to use Cloudflare Workers to validate mTLS certificates and return an HTTP 404 instead. Background For accessing internal services remotely, I have been a big fan of Cloudflare Tunnels. This system provides an easy mechanism to provide access without opening up firewall ports, and the ability to take advantage of Cloudflare security controls like their Web Application Firewall (WAF) and Zero Trust access control. Previous authorization model Up until recently, I have secured my internal applications with a simple OAuth identity validation through Zero Trust. Depending on the identity provider used, this can provide a significant amount of protection, but it can cause issues with non-web based applications like mobile apps. One simple alternative I’ve used is Service Tokens, which can be provided via custom HTTP headers – if the app I’m trying to use supports that type of customization. However, this is quite rare, so I started looking for a more universal approach. mTLS authorization Historically, during client/server communication, the focus has been on ensuring … -
Django: profile memory usage with Memray
Memory usage can be hard to keep under control in Python projects. The language doesn’t make it explicit where memory is allocated, module imports can have signficant costs, and it’s all too easy to create a global data structure that accidentally grows unbounded, leaking memory. Django projects can be particularly susceptible to memory bloat, as they may import many large dependencies like numpy, even if they’re only used in a few places. One tool to help understand your program’s memory usage is Memray, a memory profiler for Python created by developers at Bloomberg. Memray tracks where memory is allocated and deallocated during program execution. It can then present that data in various ways, including spectucular flame graphs, collapsing many stack traces into a chart where bar width represents memory allocation size. Profile a Django project Memray can profile any Python command with its memray run command. For a Django project, I suggest you start by profiling the check management command, which loads your project and then runs system checks. This is a good approximation of the minimum work required to start up your Django app, imposed on every server load and management command execution. To profile check, run: $ memray …