| web | http://simonwillison.net/ |
|---|---|
| Author |
Jan. 28, 2026 » Simon Willison's Weblog: django » [Archived Version]
My blog uses aggressive caching: it sits behind Cloudflare with a 15 minute cache header, which guarantees it can survive even the largest traffic spike to any given page. I've recently added a couple of dynamic features that work in spite of that full-page caching. Here's how those work. Edit links that are visible only to me This is a Django site and I manage it through the Django admin. I have four types of content - entries, link posts (aka blogmarks), quotations and notes. Each of those ha…
Read MoreDec. 4, 2025 » Simon Willison's Weblog: django » [Archived Version]
Django 6.0 released Django 6.0 includes a flurry of neat features, but the two that most caught my eye are background workers and template partials. Background workers started out as DEP (Django Enhancement Proposal) 14, proposed and shepherded by Jake Howard. Jake prototyped the feature in django-tasks and wrote this extensive background on the feature when it landed in core just in time for the 6.0 feature freeze back in September. Kevin Wetzels published a useful first look at Django's backg…
Read MoreDec. 1, 2025 » Simon Willison's Weblog: django » [Archived Version]
YouTube embeds fail with a 153 error I just fixed this bug on my blog. I was getting an annoying "Error 153: Video player configuration error" on some of the YouTube video embeds (like this one) on this site. After some digging it turns out the culprit was this HTTP header, which Django's SecurityMiddleware was sending by default: Referrer-Policy: same-origin YouTube's embedded player terms documentation explains why this broke: API Clients that use the YouTube embedded player (including the …
Read MoreNov. 26, 2025 » Simon Willison's Weblog: django » [Archived Version]
I talked with CL Kao and Dori Wilson for an episode of their new Data Renegades podcast titled Data Journalism Unleashed with Simon Willison. I fed the transcript into Claude Opus 4.5 to extract this list of topics with timestamps and illustrative quotes. It did such a good job I'm using what it produced almost verbatim here - I tidied it up a tiny bit and added a bunch of supporting links. What is data journalism and why it's the most interesting application of data analytics [02:03] "There…
Read MoreNov. 19, 2025 » Simon Willison's Weblog: django » [Archived Version]
I sent out my weekly-ish Substack newsletter this morning and took the opportunity to record a YouTube video demonstrating my process and describing the different components that make it work. There's a lot of digital duct tape involved, taking the content from Django+Heroku+PostgreSQL to GitHub Actions to SQLite+Datasette+Fly.io to JavaScript+Observable and finally to Substack. The core process is the same as I described back in 2023. I have an Observable notebook called blog-to-newsletter…
Read MoreAug. 29, 2025 » Simon Willison's Weblog: django » [Archived Version]
Talk Python: Celebrating Django's 20th Birthday With Its Creators I recorded this podcast episode recently to celebrate Django's 20th birthday with Adrian Holovaty, Will Vincent, Jeff Triplet, and Thibaud Colas. We didn’t know that it was a web framework. We thought it was a tool for building local newspaper websites. [...] Django’s original tagline was ‘Web development on journalism deadlines’. That’s always been my favorite description of the project. Tags: django, podcast-appearances…
Read MoreJuly 13, 2025 » Simon Willison's Weblog: django » [Archived Version]
Today is the 20th anniversary of the first commit to the public Django repository! Ten years ago we threw a multi-day 10th birthday party for Django back in its birthtown of Lawrence, Kansas. As a personal celebration of the 20th, I'm revisiting the talk I gave at that event and writing it up here. Here's the YouTube video. Below is a full transcript, plus my slides and some present-day annotations. Django Origins (and some things I have built with Django) Presented 11th July 2015 at Django…
Read MoreJuly 11, 2025 » Simon Willison's Weblog: django » [Archived Version]
Following the widespread availability of large language models (LLMs), the Django Security Team has received a growing number of security reports generated partially or entirely using such tools. Many of these contain inaccurate, misleading, or fictitious content. While AI tools can help draft or analyze reports, they must not replace human understanding and review. If you use AI tools to help prepare a report, you must: Disclose which AI tools were used and specify what they were used for (an…
Read MoreJune 3, 2025 » Simon Willison's Weblog: django » [Archived Version]
PR #537: Fix Markdown in og descriptions Since OpenAI Codex is now available to us ChatGPT Plus subscribers I decided to try it out against my blog. It's a very nice implementation of the GitHub-connected coding "agent" pattern, as also seen in Google's Jules and Microsoft's Copilot Coding Agent. First I had to configure an environment for it. My Django blog uses PostgreSQL which isn't part of the default Codex container, so I had Claude Sonnet 4 help me come up with a startup recipe to get Pos…
Read MoreMay 17, 2025 » Simon Willison's Weblog: django » [Archived Version]
django-simple-deploy Eric Matthes presented a lightning talk about this project at PyCon US this morning. "Django has a deploy command now". You can run it like this: pip install django-simple-deploy[fly_io] # Add django_simple_deploy to INSTALLED_APPS. python manage.py deploy --automate-all It's plugin-based (inspired by Datasette!) and the project has stable plugins for three hosting platforms: dsd-flyio, dsd-heroku and dsd-platformsh. Currently in development: dsd-vps - a plugin that should…
Read More