Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
PyGrunn: JSON freedom or chaos, how to trust your data - Bart Dorlandt
(One of my summaries of the 2026 one-day PyGrunn conference in Groningen, NL). Subtitle: a real-world journey from chaos to confidence using Pydantic and Pytest. Idealy, you'd have perfect json files with a fixed format and rigorous validation and ideally generated. But in a customer project, the other programmers weren't too happy about it. They had massive JSON files, partially manually crafted. Some where just one single line and others were vertically aligned. And perhaps someone depended on the specific format for some "sed" or "awk" hacking... So whatever happens: it works, don't touch it. The freedom trap. No schema means no contract. No contract means no trust. Fields accumulate, nobody removes them: "someone might be using it". Multi-team challenges: not everyone has the same skillset. He wanted a different future: a trusted future. Validated and tested and formatted. Pydantic is a python library for data validation using Python type annotations. You can define a data model with type hints. it will automatically validate and parse data according to those models: from ipaddress import IPv4Address from pydantic import BaseModel class Server(BaseModel): hostname: str ip: IPv4Address ... Make sure to look at pydantic-extra-types, they have lots of handy types like "two-character … -
PyGrunn: Python at Spotify: twenty years - Gijs Molenaar
(One of my summaries of the 2026 one-day PyGrunn conference in Groningen, NL). His parents owned a record store in some Dutch town. First records, then CDs. A social shop where you would gather to listen to CDs to determine whether to buy them. His father's brother actually started the oldest record store in Amsterdam, Concerto. It still exists. Then the world changed. Napster, CD-burners. Illegal downloading. (He himself was one of them). His parents stopped selling music in 2008. He himself got into engineering. He ended up in South Africa, doing workflow orchesration for radio telescopes. There he introduced Docker and containers. He gave a talk at Pygrunn about it in 2016. While he was in the South African desert, in Sweden someone started the Spotify company. He actually had used a library ("luigi") made by Spotify in his telescope work. He tried to get a job at Spotify and succeeded. So the kid who grew up in a record store now works at the company that reinvented how people listen to music. It all started for Spotify with Java (jboss 5). They hated it. It was replaced with Python: the reason was that nobody hated it. 80% of … -
PyGrunn: list-man, pragmatic system integration - Doeke Zanstra
(One of my summaries of the 2026 one-day PyGrunn conference in Groningen, NL). When automating in a big company with many systems, you often end up with spaghetti: many systems connecting to a lot of the others... A common solution is to have a "bus architecture". Generic existing "enterprise service bus" solutions were clearly overkill, so he proposed an alternative solution. He made a couple of assumptions/choices. All data is tabular data. He wanted to store a copy of data in a database. SQL views to access the data. So: multiple sources that he wanted to import in a central database (which would function as a sort of "read-only enterprise service bus"). And a generic sql/view-based way of accessing the data. He initially focused on read-only data. And he started real simple. Just a bash script that ran regularly that scraped data from other systems and injected it in the database. In the second version of the system, for every system he wrote a target/command in a Makefile. Every thing that needed to be scraped got its own table (called a "list" in his system"). Lists could be compared. The first killer app was a comparison between a telephone list … -
django-prodserver design updates
While at DjangoCon Europe in Athens I had a fair few conversations about prodserver and spent a lot of time thinking about it because that was the thrust of my talk as well or the artifact of my talk mainly around the API of the command itself. I especially got to chat with Jake Howard of Django Tasks fame and asked him for his consideration about what his plans are for what a worker command might look like in Django core, which in turn, then impacts some of my thinking on Django prod server. I have been documenting my thoughts and playing around with the API in a few different branches, but currently I have landed on these changes which will land at some point in the near future into django-prodserver: First up is renaming the command from prodserver to just server. This is a mirror to Jake's desire for just a single worker command that covers both development and production. Following on from this is adding development backends for runserver, runserver_plus and daphne. These aren't just calling them, but I am reimplementing them as full developing them from scratch as backends. I will also likely depreacate devserver with this … -
Me and Mentorship
Hi there.. it’s been a while as usual… 😄 Today I would like to talk about mentoring. It’s been a constant in my life. I have been on both sides: mentee and mentor. I can tell you that you learn so much from this exchange. Being a mentee is a way to learn from an expert or just people who know more than yourself. Those people you truly admire for their work. The mentees don’t even always tell how much they admire their mentors. On the reverse, being a mentor is a good way to learn how to share your knowledge the best way. You watch the person you’re mentoring grow and make their own decisions, without ever having to ask you for advice in the end, because you’ve given them the tools to find the answers on their own. One day, perhaps, they’ll take the time to thank you, because without even realizing it, you’ve changed their life. It’s crazy, isn’t it? I love mentoring because it’s a special and unique exchange: you feel close to the other person, because when you’re a mentor, you see a younger version of yourself in your mentee, and the mentee sees you … -
EuroPython 2026 - Mia Bajić
🔗 Links EuroPython 2026 website Mia’s personal website and podcast, Behind the Commit A Year on the EuroPython Society Board by Mia EuroPython 2025 in Prague Recap by Will Mia on LinkedIn, Instagram, BlueSky Behind the Commit on YouTube 📚 Books Humble Pi: When Math Goes Wrong in the Real World by Matt Parker The Design of Everyday Things by Donald Norman Hands on Rust by Herbert Wolverson 🎥 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/. -
Redesigning DjangoProject.com
News PyCharm Campaign Now Includes RENEWALS! Past or current PyCharm Pro users can now take part in the PyCharm campaign! Add 12 months to your current PyCharm Pro subscription. The same deal applies to past, current, or first time users. Get PyCharm Pro 30% off and 100% goes directly to the DSF! Until May 3rd. Adopt Annual Release Cycle (DEP 20) A new DEP from Carlton Gibson proposing that Django move to an annual release cycle. There is a lengthy discussion on the GitHub ticket What's new in pip 26.1 - lockfiles and dependency cooldowns! A detailed post of new features from Richard Si, the current maintainer, including pylock files, dependency cooldowns, security fixes, and more. Django Software Foundation It's time to redesign djangoproject.com A redesign of the djangoproject.com website is in progress. This post from the Django blog is an update on the project's process: the plan, who’s doing the work, and how you can help. Updates to Django Today, "Updates to Django" is presented by Hwayoung from Djangonaut Space! 🚀 Last week we had 14 pull requests merged into Django by 13 different contributors - including a first-time contributor! Congratulations to Dinesh Thumma for having their first commits … -
Issue 335: Redesigning DjangoProject.com
News PyCharm Campaign Now Includes RENEWALS! Past or current PyCharm Pro users can now take part in the PyCharm campaign! Add 12 months to your current PyCharm Pro subscription. The same deal applies to past, current, or first time users. Get PyCharm Pro 30% off and 100% goes directly to the DSF! Until May 3rd. Adopt Annual Release Cycle (DEP 20) A new DEP from Carlton Gibson proposing that Django move to an annual release cycle. There is a lengthy discussion on the GitHub ticket What's new in pip 26.1 - lockfiles and dependency cooldowns! A detailed post of new features from Richard Si, the current maintainer, including pylock files, dependency cooldowns, security fixes, and more. Django Software Foundation It's time to redesign djangoproject.com A redesign of the djangoproject.com website is in progress. This post from the Django blog is an update on the project's process: the plan, who’s doing the work, and how you can help. Updates to Django Today, "Updates to Django" is presented by Hwayoung from Djangonaut Space! 🚀 Last week we had 14 pull requests merged into Django by 13 different contributors - including a first-time contributor! Congratulations to Dinesh Thumma for having their first commits … -
Work & Life updates
This week is a short detour from the normal technical topics I cover around Django, so feel free to skip if this isn't your thing! Two big items this week, first up is that we launched Hamilton Rock this week! The next few months we will doing a private beta with select customers to test the system is working and get feeback about what's missing and needs more work. This is essential to us get some funding and finding where we are in product market fit! Next up is that I will be mentoring Praful Gulani through Google Summer of Code this year on adding Experimental APIs to Django. I'm excited and nervous about this as it could have a fairly large impact on Django's trajectory, assuming we crack it and get the shape of this process and API correct. I am also hopeful to secure a new client in the next couple weeks which will address my immediate cashflow issues in the business. In other news I'm working on a number of side projects. First up is Django Bureau and allpacked.co.uk. This is an experiment in getting AI agents to run an e-commerce store in an autonomous manner without … -
DjangoCon Europe Recap + Other News - Jeff Triplett
🔗 Links 30% off PyCharm, 100% to Django promo REVSYS website Django News Newsletter new website Adopt Annual Release Cycle (DEP 20) Django on the Med - September 23rd to 25th in Pescara, Italy DSF Board Member Minutes Website Air: Agentic Development Environment 📦 Projects The Fixi Project Pydantic AI and CodexBar Zuban type checker and LSP 📚 Books The Worlds I See by Fei-Fei Li The Greatest Bedtime Story Ever by Jessie Sima and Enshittification by Cory Doctorow 🎥 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/. -
Easily Stream LLM Responses with Django-Bolt and PydanticAI
I like how easy it is to create an async streaming endpoint with django-bolt and PydanticAI from scratch. With only a few commands you can set it up. -
My DjangoCon Europe 2026
A timeline of my DjangoCon Europe 2026 journey, from Lecce to Bari and then Athens, told through the Mastodon posts I shared along the way. -
Issue 334: New look, new home, same everything else
News uv is now supported natively - Read the Docs Read the Docs now natively supports uv, bringing faster and simpler Python dependency installs to your docs builds. Support the Django Software Foundation by buying PyCharm at a 30% Discount JetBrains and the Django Software Foundation team up again to offer 30% off PyCharm while matching donations to fund Django’s core development and community programs. Django Software Foundation DSF member of the month - Rob Hudson Rob Hudson, creator of Django Debug Toolbar, reflects on his open source journey, Django’s community spirit, and bringing Content Security Policy support into Django core. Python Software Foundation Announcing Python Software Foundation Fellow Members for Q1 2026! 🎉 The Python Software Foundation has announced its first 2026 class of Fellows, recognizing community leaders and contributors from around the world. Wagtail CMS News Save the 🌎 : Delete your Stuff! For Earth Day, Wagtail makes the case that deleting old emails, files, and forgotten drafts is a simple way to cut digital clutter and lighten your carbon footprint. Updates to Django Today, "Updates to Django" is presented by Raffaella from Djangonaut Space! 🚀 Last week we had 26 pull requests, into Django by 13 different … -
DjangoCon 2026 Review
This week I have just got back from my third DjangoCon Europe. This year was Athens and once again it was an amazing experience. Made slightly stressful this time by doing a last minute talk that I had proposed but got rejected, it was a last minute cancellation that meant I got the opportunity to do so! So I spent most of the conference preparing for that in terms of slides, demo and practising. I also managed to squeeze in a lightning talk on Thursday for the online community working group to advertise it and call out that we can and should do better online as a community, there's more to do and we need help! The main talk I did was on however essentially advertising Django prodserver, the package I've created, but framing it as an API design talk, so Django lacks a deployment API story, or running and I was focusing on running Django projects. So we lack a production story and the run server argument is that it's it doesn't really communicate actually what it's the commands doing. So I think it generated a bit of interest. Some peop I think it, lots of people appreciated it, … -
Django: fixing a memory “leak” from Python 3.14’s incremental garbage collection
Back in February, I encountered an out-of-memory error while migrating a client project to Python 3.14. The issue occurred when running Django’s database migration command (migrate) on a limited-resource server, and seemed to be caused by the new incremental garbage collection algorithm in Python 3.14. At the time, I wrote a workaround and started on this blog post, but other tasks took priority and I never got around to finishing it. But four days ago, Hugo van Kemenade, the Python 3.14 release manager, announced that the new garbage collection algorithm will be reverted in Python 3.14.5, and the next Python 3.15 alpha release, due to reports of increased memory usage. Here’s the story of my workaround, as extra evidence that reverting incremental garbage collection is a good call. Python 3.14’s incremental garbage collection Python (well, CPython) has a garbage collector that runs regularly to clean up unreferenced objects. Most objects are cleaned up immediately when their reference count drops to zero, but some objects can be part of reference cycles, where some set of objects reference each other and thus never reach a reference count of zero. The garbage collector sweeps through all objects to find and clean up these … -
Issue 333: Django News - 30% Off PyCharm Pro – 100% for Django
Django News Newsletter is moving! Just a quick heads up. We’re planning to move our newsletter to a new platform next week. If things look a little different when it shows up, it’s still us. News PyCharm & Django annual fundraiser JetBrains and the Django Software Foundation team up again to offer 30% off PyCharm while matching donations to fund Django’s core development and community programs. djangoproject.com New Technical Governance - request for community feedback Django proposes a simpler, more flexible technical governance model and is inviting community feedback ahead of a planned July 2026 rollout. djangoproject.com Could you host DjangoCon Europe 2027? Call for organizers DjangoCon Europe 2026 is happening right now in Athens, Greece but plans for 2027 have already begun. This post lays out all the resources for any questions, support, and more for future organizers. djangoproject.com Reverting the incremental GC in Python 3.14 and 3.15 - Core Development Python is rolling back its new incremental garbage collector in 3.14 and 3.15 after real-world memory issues, reverting to the proven generational model while rethinking a future reintroduction. python.org PEP 772: Packaging Council governance process (Round 3) - Packaging / Coordination PEP 772 has officially been approved, creating … -
Django News - 30% Off PyCharm Pro – 100% for Django - Apr 17th 2026
Introduction Django News Newsletter is moving! Just a quick heads up. We’re planning to move our newsletter to a new platform next week. If things look a little different when it shows up, it’s still us. Django Newsletter News PyCharm & Django annual fundraiser JetBrains and the Django Software Foundation team up again to offer 30% off PyCharm while matching donations to fund Django’s core development and community programs. djangoproject.com New Technical Governance - request for community feedback Django proposes a simpler, more flexible technical governance model and is inviting community feedback ahead of a planned July 2026 rollout. djangoproject.com Could you host DjangoCon Europe 2027? Call for organizers DjangoCon Europe 2026 is happening right now in Athens, Greece but plans for 2027 have already begun. This post lays out all the resources for any questions, support, and more for future organizers. djangoproject.com Reverting the incremental GC in Python 3.14 and 3.15 - Core Development Python is rolling back its new incremental garbage collector in 3.14 and 3.15 after real-world memory issues, reverting to the proven generational model while rethinking a future reintroduction. python.org PEP 772: Packaging Council governance process (Round 3) - Packaging / Coordination PEP 772 has officially … -
Djangocon EU: body of knowledge - Daniele Procida
(One of my summaries of the 2026 Djangocon EU in Athens). Athens! The thinking industry started here. Athens is often the origin if you follow ideas to the source. Here also Socrates was found guilty (280-221) for "corrupting the youth" on trumped-up charges. Though... he made it is job to be a complete nuisance: exposing everyone's hypocrisy and asking difficult questions. After the 280-221 vote he got to give a speech in reaction. After that, the vote on the actual punishment was 360-141 in favour of the death penalty. The speech must have been particularly irritating. On to a different subject. He watched the recent launch of the NASA rocket that went to the moon. A marvel of technology. That was measured using body parts, being 322 feet tall. And the distance to the moon in miles. Why not the scientific meter and kilometer? Plato already mentioned it. "Now take the acquisition of knowledge; is the body a hindrance or not, if one takes it into partnership to share an investigation". And "when the soul tries to investigate anything with the help of the body, it is obviously led astray". 0.098 km = 98 m = 98000 mm, a child … -
Djangocon EU: improving runserver with django-prodserver - Andrew Miller
(One of my summaries of the 2026 Djangocon EU in Athens). Original title: improving one of Django's most used APIs — and it's not the one you're thinking of. (I'm using a more descriptive title for my blog entry.) APIs are everywhere. Django rest framework, but also the models layer. And: manage.py runserver, he considers that an API. Everybody runs it. So: can we improve it? "Runserver" doesn't sound the same as "devserver" or "rundevserver". It doesn't advertise that it is only intended for development. A name change could help there. But... Django really likes to be stable. It is probably too entrenched to change. Production is missing a cohesive API. You normally run something like gunicorn myapp.wsgi 0.0.0.0:8000 --workers 4... He tried to get improvements in. Since 5.2, there's a warning when you start runserver: "it is only intended for development". But you might miss it when you get lots of log messages. Other people complained about the extra two lines. He started django-prodserver. pip install django-prodserver[gunicorn]. You can then run manage.py prodserver (and manage.py devserver, he snuck that in). You have to add a bit of configuration to your settings file: PRODUCTION_PROCESSES = { "web": { "BACKEND": "django_prodserver.backends.gunicorn.GunicornServer", … -
Djangocon EU: How Django is helping to build the biggest X-ray observatory to date - Loes Crama
(One of my summaries of the 2026 Djangocon EU in Athens). She works at Cosine, they develop measurement systems and space instrumentation. They work for the space industry (ESA, NASA, etc). They're now working on "high-energy optics", the NewAthena x-ray observatory, the biggest one to date. NewAthena: NEW Advanced Telescope for High-ENergy Astrophysics. Planned launch is in 2037 on Ariane 6.4. Talking about rocket science is cool, but where's the software? Within the company, software is an internal service, supporting scientists. Handling data in many ways: visualization, analysis, processing, management. Django plays a big role in all of this. When you build something with Django in a scientific context, you really need to understand the data. Workflows must be flexible. R&D and production often don't need to be strictly separated. Multiple datastores for various purposes (like an extra MongoDB, for instance) is often handy. Their application consists of: SXRO (silicon x-ray optics) database. A Mysql database. Django. The goal is to track all the components that go into the observatory. Status and quality. Configuration and geometry. Component relationships. Inspections. History of all the components. The default Django admin is their primary method of using the application. Often, it is said … -
Djangocon EU: supply chain attacks on Python projects - Mateusz Bełczowski
(One of my summaries of the 2026 Djangocon EU in Athens). Full title: what's in your dependencies? Supply chain attacks on Python projects. How supply chain attacks work: attackers don't attack your code directly, they target something you trust. A typical Django project has lots of dependencies. Direct dependencies and "transitive dependencies", dependencies of our dependencies. If you depend on requests, requests itself will grab certify and urllib3. Possible package attacks: Inject malicious code directly into the repo. Create malicious package. Typosquatting (abusing typos), slopsquatting (abusing typos made by LLMs). "Brandjacking": quickly after deepseek became popular, a deepseekai package was published that stole credentials. Compromise existing package. Credential stealing, CI/CD exploits. What attackers typically do with access is to steal credentials. Environment variables, cloud keys (AWS_xyz), pypi tokens, ssh private keys, database URLs, saved passwords. Example: num2words was hacked in July 2025. Phishing leading to maintainer credentials theft. Fake login page at pypj.org instead of pypi.org. Then they uploaded faulty releases with the captured credentials. Credentials weren't rotated, so a second attack happened a few days later. This malware targeted .pypirc files, leading to more compromises. How can we defend from this kind of attacks? Depends on the kind of … -
Djangocon EU: lightning talks day 3
(One of my summaries of the 2026 Djangocon EU in Athens). Announcement - Carlton Gibson They've been working on improving the technical governance of Django. They'd like to get feedback. There's a blog post about it. Oh, and look at the "30% off PyCharm" button on the django website, that raises quite a lot of funds for Django. PyCharm's sponsoring is a very sizeable financial part of Django, thanks! Even more table partitioning with Django, Postgres and UUIDs - Tim Bell (See his earlier talk on partitioning). UUID is 128-bits, usually displayed as hex strings. It starts with the unix timestamp, followed by several random fields (in version 7). In version 8, you have more flexibility. You can customize it to put a specific value (an id of a related field in their case) in the first field. Partitioning per UUID (they used it as their ID) then effectively also partitions on the related field. Speeding up Django startup times with lazy imports - Anze Pecar Imports in Python can be slow. Luckily, python has something build-in to check it, the "importtime" flag: python -X importtime manage.py check He worked around the packages he found by importing the package inside … -
Djangocon EU: zero-migration encryption - Vjeran Grozdanic
(One of my summaries of the 2026 Djangocon EU in Athens). Full title: zero-migration encryption: building drop-in encrypted field in Django. He works at Sentry. Huge site with a Django backend and thousands requests per second. He had to add a new table to store 3rd party API credentials. Oh: should this be encrypted? Yes. But: each team has its own way to encrypt data. And there were at least 10 encryption keys here and there (as environment variables). And tens of places where encryption/decryption happens. So: better to build a generic solution. Or use an existing generic solution. And yes, there are multiple libraries. EncryptedCharField looked nice. But the problem was all the existing data in the various places. Sentry is not a site that you can shut down for a while, so you have to do it with zero downtime. This means you can never change an existing column type. A solution could be to add a new encrypted field next to the existing one. Then fill it and backfill it and make sure no new data is written to the old field and then you can remove the old field. But that's quite a job with all … -
Djangocon EU: auto-prefetching with model field fetch modes in Django 6.1 - Jacob Walls
(One of my summaries of the 2026 Djangocon EU in Athens). There's an example to experiment with here: https://dryorm.xterm.info/fetch-modes-simple Timeline: it will be included in Django 6.1 in August. The reason is the 1+n problem: books = Book.objects.all() for book in books: print(book.author.name) # This does a fresh query for author every time. You can solve it with select_related(relation_names) or prefetch_related(relation_names). The first does an inner join. The second does two queries. But: you might miss a relation. You might specify too many relations, getting data you don't need. Or you might not know about the relation as the code is in a totally different part of the code. Fetch mode is intended to solve it. You can append .fetch_mode(models.FETCH_xyz) to your query: models.FETCH_ONE: the current behaviour, which will be the default. models.FETCH_PEERS: Fetch a deferred field for all instances that came from the same queryset. More or less prefetch_related in an automatic, lazy manner. models.FETCH_RAISE: useful for development, it will raise FieldFetchBlocked. And it will thus tell you that you'll have a performance problem and that you might need FETCH_PEERS This is what happens: books = Book.objects.all().fetch_mode(models.FETCH_PEERS) for book in books: # We're iterating over the query, so the … -
Djangocon EU: Django templates on the frontend? - Christophe Henry
(One of my summaries of the 2026 Djangocon EU in Athens). It all started with formsets: you generate a new form based on other forms. You can use it to create pretty fancy forms. But your designer can get quite creative. And you might have variable forms that have to react to user input. A common solution is to use htmx, but that means server requests all the time. And some users have really bad connections. Regular requests aren't handy in that scenario. He looked at django-rusty-templates: Django's template engine implemented in Rust. It had a template parser that he could re-use. With OXC (javascript oxidation compiler) he converted that to javascript. That way, he could offload much of the django form creation handling to the frontend, including reacting to user input and showing alerts. The work-in-progress project is called django-template-transpiler: https://github.com/christophehenry/django-template-transpiler . Don't use it for production. Unrelated photo explanation: a cat I encountered in Athens on an evening stroll in the neighbourhood behind the hotel.