Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
Smoother translations in Django
Iβve been working for roughly 5 years now in an app that is localized to Swedish, so I have built up some opinions on how to manage translation of a Django project. Hereβs my list of things I do currently: Always use gettext_lazy Iβve been bitten many times by accidentally using gettext when I should have used gettext_lazy, resulting in strings that were stuck in English or Swedish randomly because a user with a specific language caused that piece of code to be imported. I realize that there are some performance implications here, but compared to stuff like database access this is tiny and has never shown up in profiler outputs, so I will gladly take this hit and avoid these bugs that tend to be hard to track down (if they even get reported by users at all!). A simple naive hand-rolled static analysis test that forbids usages of plain gettext in the code base is easy to implement and stops a whole class of bugs. Django models The Okrand setting django_model_upgrade which dynamically sets verbose_name for all fields correctly with the normal default, and on the model sets up verbose_name and verbose_name_plural. Then when you run the Okrand β¦ -
Write the docs meetup: developers documentation, your hidden strength - FrΓ©dΓ©ric Harper
(One of my summaries of the Amsterdam *write the docs* meetup). If you have a product, you need good developer documentation. "It is an integral part of your product: one cannot exist without the other". You might have the best product, but if people don't know how to use it, it doesn't matter. What he tells developers: good documentation reduces support tickets and angry customers. You should be able to "sell" good documentation to your company: it saves money and results in more sales. Some notes on documentation contents: You need a search function. The first thing you need to add. Think about John Snow (game of thrones): "you know nothing, John Snow". Be detailed in your instructions, they'll need it. Start with the assumption that the user knows nothing about your program. Advanced users can easily skip those parts. Have a proper architecture/structure. Simply having a "home" link to get back to the start already helps. Add a "getting started" section with step-by-step instructions to get something simple running. And detailed how-to guides where you go into depth. Show a table of contents of the current page. Keep the docs of previous versions available. Take great screenshots. Docs should β¦ -
Write the docs meetup: digital sovereignty for writers - Olufunke Moronfolu
(One of my summaries of the Amsterdam *write the docs* meetup). Full title: digital sovereignty for writers: your data, your decisions. Olufunke Moronfolu has her website at https://writerwhocodes.com/ . "Digital sovereignty is the ability to have control over your own digital destiny: the data, hardware and software that you rely on and create" (quote from the World Economic Forum). What do writers want? Mostly: to be read. For this you could for instance start looking for (commercial) blogging platforms, searching for the best one. And after a while you start looking for a different one. On and on. You can run into problems. Substack might ban your newsletter. A google workspace domain being blocked. A Medium story getting deleted without feedback. Tim Berners-Lee intended for the web to be universal and open. But now it is mostly a collection of isolated silos. There are some questions you can ask yourself to test your sovereignty. If your current platform deletes your account, is your content completely lost? Second question: can you export your work in some portable format (like markdown). If you are a technical writer, you have to do the test twice. Once for your own content and once for β¦ -
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 β¦ -
Google Summer of Code 2026 with Django
News Google Summer of Code 2026 with Django All the information you need to apply for Django's 21st consecutive year in the program. 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. Wagtail CMS News The *1000 most popular* Django packages Based on GitHub stars and PyPI download numbers. 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 BuiltinLookup. (#36934) (#35972) β¦ -
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 β¦ -
Contributor Covenant, Security Team Expansion, and Django 6.1 Updates
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 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. 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. 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. 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 True if the QuerySet β¦ -
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 β¦ -
The Post-Heroku Django World
News Django Steering Council 2025 Year in Review They've been busy! A new-features repo, Community Ecosystem page, administrative bits, and more. 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. 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. 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. Wagtail CMS News Wagtail nominated for TWO CMS Critic Awards! π Wagtail CMS is up for some trophies. Updates to Django Today, "Updates to Django" is presented by Hwayoung from Djangonaut Space! π Last week we had 11 pull requests merged into Django by 8 different contributors - including 2 first-time contributors! Congratulations to Patryk Bratkowski and ar3ph for having their first commits merged into Django - welcome on board! It's fixed horizontal form field alignment issues within <fieldset> in admin. (#36788) Django Fellow Reports β¦ -
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 β¦