Django Community (original) (raw)

Posted on April 8, 2026 at noon by 406.ch: Posts about Django RSS
Switching all of my Python packages to PyPI trusted publishing As I have teased on Mastodon, I’m switching all of my packages to PyPI trusted publishing. I have been using it to release the django-debug-toolbar a few times but never set it up myself. The process seemed tedious. The malicious releases uploaded to PyPI two weeks ago and the blog post about digital attestations in pylock.toml finally pushed me to make the switch. All of my PyPI tokens have been revoked so there is no quick shortcut. Note I’m also looking at other code hosting platforms. I have been using git before GitHub existed and I’ll probably still use git when GitHub has completed its enshittification. For now the cost/benefit ratio of staying on GitHub is still positive for me. Trusted publishing isn’t available everywhere, so for now it is GitHub anyway. In the end, switching an existing project was easier than expected. I have completed the process for django-prose-editor and feincms3-cookiecontrol. For my future benefit, here are the step by step instructions I have to follow: Have a package which is buildable using e.g. uvx build On PyPI add a trusted publisher in the project’s publishing settings: Owner: matthiask, …
Read this post in context

Posted on April 8, 2026 at midnight by Software Crafts RSS
I have recently been reading Swizec Teller's new book Scaling Fast and in it he mentions architectural complexity, which reminded me of my desire for a tool that combines database dependencies between Django apps and import dependencies between Django apps. To date, I have used other tools such as graph models from Django extensions, import-linter is the most recent one, and pyreverse from Pylint. They all do bits of the job, but require manual stitching together to get a cohesive graph of everything overlaid in the right way. So I remembered about this, and so over the last couple of days, I've built a new package which combines all of this into a live view which updates as you build your app, a management command and a panel for Debug Toolbar. Why the Django app level, you ask? Primarily, I do find models good, but they can get a little too complicated and a little you get a few too many lines and doing imports at the module level within an app or like separating it all out, again, you lose it becomes there becomes too much noise to signal to really understand the logical relationship between different components in …
Read this post in context

Posted on April 8, 2026 at midnight by rogs RSS
A heads up before we start: over 95% of this blog post was written by my OpenClaw bot running GLM-5. I reviewed, edited, and approved everything, but credit where it’s due: Tepui ⛰️ (yes, I named my AI) did most of the heavy lifting. I need to vent, but in a good way this time. Last week I vented about Anthropic pushing away paying customers. After that third-party ban hit, I had to rip out Claude Opus 4.6 from my OpenClaw setup and find alternatives. So I rebuilt the whole thing from scratch. This time, I did it right. What I wanted I use OpenClaw as my personal AI assistant. It connects to my Telegram, manages my calendar, runs cron jobs, helps with research, and generally makes my life easier. Before the ban, it was running Claude Opus 4.6. After the ban, I needed alternatives. My requirements were simple: Free or cheap (Lazer’s LiteLLM proxy gives us free access to certain models) A text model for daily use (fast, capable reasoning) A vision model for images and PDFs (I send screenshots, receipts, documents) Image generation (sometimes I need to create images) A fallback if something breaks What I got was …
Read this post in context

Posted on April 7, 2026 at 2:21 a.m. by timonweb.com Django posts RSS
A few years back, a healthcare professional association reached out to me. They regulate and support thousands of practitioners across their region: licensing, insurance, events, the whole deal. Their website couldn't keep up. What they needed was a platform that could handle member applications, renewals, payments, event registrations, an … Read now
Read this post in context

Posted on April 6, 2026 at midnight by rogs RSS
GSD (Get Shit Done) is one of the best things that’s happened to my development workflow. If you haven’t heard of it, it’s a meta-prompting and context engineering system for Claude Code (and OpenCode). It breaks your work into milestones and phases, spawns fresh subagents with clean contexts for each task, and solves the context rot problem that kills quality in long AI sessions. I wrote about my full setup on my AI toolbox page. GSD is great out of the box. But I wanted it to be mine. I’ve been using GSD daily for weeks now, and over time I kept bumping into the same friction points: the plan review was too shallow, the verification step was too manual, and the UI audit felt incomplete. So I did what any developer would do. I patched it. This post is about the three patches I made, how they work, why I made them, and how you can build your own. More importantly, it’s about why you should be patching your tools. Not just GSD; any tool you use daily. The philosophy: own your tools Here’s the thing about AI tools right now: we’re at a point in time where you …
Read this post in context

Posted on April 4, 2026 at midnight by rogs RSS
I need to vent. I want to start by saying this is my opinion and doesn’t reflect the views of my employers or anyone else. I’ve been paying $100/month for Claude Max because Claude is, without question, the best model for programming. I’ve built my entire AI workflow around it. I’ve written blog posts about it. I’ve recommended it to colleagues, friends, and strangers on the internet. I’ve been a loyal, paying customer. And Anthropic keeps making it harder to stay. The third-party ban On the night of April 3, 2026, Anthropic sent an email to subscribers announcing that third-party harnesses like OpenClaw can no longer use Claude Max subscription limits. Starting April 4 at 12pm PT. That’s less than 24 hours of notice. Ouch. Let that sink in. Less than 24 hours to rip out and replace the model powering my personal AI assistant, my Emacs tooling, and potentially other parts of my workflow. My OpenClaw setup was running Opus 4.6 for personal tasks: managing my calendar, maintaining my open source projects, doing research, all through Telegram. It was perfect. Now if I want to keep using Claude with OpenClaw, I need to pay extra on top of my …
Read this post in context

Posted on April 3, 2026 at 10 a.m. by Django News RSS
News Incident Report: LiteLLM/Telnyx supply-chain attacks, with guidance A recent supply chain attack on popular PyPI packages exposed how quickly malware can spread through unpinned dependencies—and why practices like dependency locking and cooldowns are now essential for Python developers. pypi.org The PyCon US 2026 schedule is live 🌴🐍 plus security updates, community programs & more PyCon US 2026 heads to Long Beach with its schedule now live, alongside major Python ecosystem updates spanning security improvements, new community programs, and ongoing PSF initiatives. mailchi.mp Django Software Foundation DSF Board Meeting Minutes, March 12, 2026 DSF approved trademark renewal plans, advanced a long-awaited Code of Conduct update, and continued shaping community governance and outreach efforts. django.github.io Wagtail CMS News How to Generate SEO Descriptions for Your Entire Wagtail Site at Once ⚡ Use Wagtail AI’s built-in LLM pipeline to bulk-generate SEO meta descriptions across your entire site in minutes with a simple Django management command. timonweb.com How to Show a Waitlist Until Your Wagtail Site Is Ready A clever Django and Wagtail pattern for launching with a waitlist while selectively granting preview access using secure cookies and a simple passphrase gate. djangotricks.com Build Dynamic Campaign Landing Pages in Wagtail Use a single …
Read this post in context

Posted on April 2, 2026 at midnight by rogs RSS
My main machine is a beast. Ryzen 9 9950X3D, 64 GB of RAM, RX 9060 XT, three monitors, the works. It barely ever shuts off. So at some point I started thinking: why isn’t this thing working for me when I’m not sitting in front of it? The answer is now: it does. I’m running OpenCode as a persistent server on this machine, accessible from anywhere through my WireGuard VPN. I can spin up coding sessions from my MacBook Air, my phone, wherever. And the best part? I have scheduled jobs that run overnight: adding tests, updating documentation, enforcing code conventions. I wake up to PRs waiting for my review. Here’s the full setup. The architecture ┌─────────────────────────────────────────────────────────┐ │ roger-beast │ │ (Ryzen 9 9950X3D / 64GB) │ │ │ │ ┌──────────────────┐ ┌──────────────────────┐ │ │ │ opencode serve │◀─────│ systemd user service │ │ │ │ :4096 (web UI) │ │ (auto-start/restart) │ │ │ └────────┬─────────┘ └──────────────────────┘ │ │ │ │ │ │ ┌──────────────────────┐ │ │ │ │ opencode-scheduler │ │ │ │ │ (systemd timers) │ │ │ │ │ ┌──────────────────┐ │ │ │ │ │ │ 2am: add tests │ │ │ │ │ │ │ 3am: update docs …
Read this post in context

Posted on April 1, 2026 at 11 p.m. by Reinout van Rees' weblog RSS
(One of my summaries of the Leiden (NL) Python meetup). Wave audio is more or less the original representation of digital audio. .wav format (there are competing formats like .au or .aiff). Typically it is "PCM-encoded", just as what comes out of the CD. The .wav format was introduced by microsoft in windows 3.1 in 1992. But... it is still relevant for audio production or podcasts. And: for lab equipment. The company Michiel works for (https://samotics.com/, sponsor of the meetup's pizza, thanks!) records the sound of big motors and other big equipment for analysis purposes. They use .wav for this. Around 1992, Python also started to exist. Version 1.0 (1994) included the "wave" module in its standard library. But: it is only intended for regular .wav usage, so two stereo channels and max 44.1 kHz frequency. He needed three channels (for sound recordings for the three phases of the electrical motor) and he needed higher resolution. He showed that you could actually put three channels into a .wav with Python. Audacity loaded it just fine, but the "flac" encoder refused it, with an error about a missing WAVE_FORMAT_EXTENSIBLE setting. He started investigating the python bugtracker and discovered someone had already …
Read this post in context

Posted on April 1, 2026 at 11 p.m. by Reinout van Rees' weblog RSS
(One of my summaries of the Leiden (NL) Python meetup). Qr codes are everywhere. They're used to transport data, the best example is a link to a website, but you can use them for a lot of things. A nice different usage is a WIFI connection string, something like WIFI:T:WPA;S:NetworkName;p:password;; . Rob focuses on the url kind. There's a standard, ISO/IEC 18004. QR codes need to be square. With a bit of a margin around it. The cells should also be square. You sometimes see somewhat rounded cells, but that's not according to the standard. You sometimes see a logo in the middle, but that actually destroys data! Luckily there's error correction in the standard, that's the only reason why it works. There's more to QR codes than you think! He uses the segno as qr code library (instead of "qrcode"). It is more complete, allows multiple output formats, it can control error correction: import segno qr = segno.make("https://pythonleiden.nl/") qr.save("leiden.png") Such an image is very small. If you scale it, it gets blurry. And there's no border and no error correction. We can do better: import segno qr = segno.make("https://pythonleiden.nl/", error="h") # "h" is the "high" level of error correction, …
Read this post in context

Posted on April 1, 2026 at 11 p.m. by Reinout van Rees' weblog RSS
(One of my summaries of the Leiden (NL) Python meetup). Daniël is a civil engineer turned software developer. He works for a company involved in improving the 17000 km of dikes in the Netherlands. He liked programming, but interfacing with his colleagues was a bit problematic. Jupyter notebooks without a venv? Interfaces with QT (which explode in size)? PyInstaller? In the end, he often opted for data in an excel sheet and then running a python script... He now likes to use streamlit, a Python library for creating simple web apps, prototyping, visualisation. It has lots of build-in elements and widgets. Data entry, all sorts of (plotly) charts, sliders, selectboxes, pop-ups, basically everything you need. You can add custom components with html/css/js. How does it work? It is basically a script. The whole page is loaded every time and re-run. A widget interaction means a re-run. Pressing a button means a re-run. There is state you can store on the server per session. He showed a demo demonstrating the problems caused by the constant re-running (and losing of state) and how to solve it with the session state. He then showed a bigger streamlit demo. On a map, you could …
Read this post in context

Posted on April 1, 2026 at 9 a.m. by DjangoChat RSS
🔗 Links Adam's Books Introducing tprof Introducing icu4py Carlton's keynote at DjangoCon Europe Recent trends in the work of the Django Security Team 📦 Projects dj-urls-panel Hornbeam Tachyon 📚 Books The Coming Wave by Mustafa Suleyman The BEAM Book: Understanding the Erlang Runtime — Erik Stenman The Fabric of Civilization by Virginia Postrel 🎥 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/.
Read this post in context

Posted on April 1, 2026 at 2:53 a.m. by timonweb.com Django posts RSS
Recently, I've used Wagtail AI internals to mass-generate SEO descriptions for my blog posts. 150+ pages, done in minutes — way faster than clicking through the admin UI one page at a time. Wagtail AI package provides you with a solid set of AI tools that help with text … Read now
Read this post in context

Posted on March 27, 2026 at 10 a.m. by Django News RSS
News Calling for research participants from Django, Laravel, Ruby on Rails, Next.js and Spring Boot communities Former DSF President and researcher Anna Makarudze is seeking Django developers to share insights on dependency vulnerabilities and supply chain risks in open source. pychronicles.com Djangonaut Space News Djangonaut Space Financial Report 2025 Djangonaut Space’s 2025 report highlights a community-powered year of $2.2k in donations funding tools and conference access, while setting sights on sending contributors to even more events in 2026. djangonaut.space Djangonaut diaries, week 3 - Working on an ORM issue A deep dive into Django’s ManyToMany indexes reveals an unnecessary extra index, showing how databases already optimize with composite indexes and setting the stage for a cleaner ORM fix. dev.to Wagtail CMS News Wagtail Routable Pages and Layout Configuration Build flexible Wagtail routable pages that use StreamField layouts to dynamically control how Django model data renders on detail views. djangotricks.com Updates to Django Today, "Updates to Django" is presented by Raffaella from Djangonaut Space! 🚀 Last week we had 18 pull requests merged into Django by 15 different contributors - including 4 first-time contributors! Congratulations to Juho Hautala, Huwaiza, (James) Kanin Kearpimy 🚀 and Praful Gulani for having their first commits …
Read this post in context

Posted on March 25, 2026 at noon by 406.ch: Posts about Django RSS
LLMs for Open Source maintenance: a cautious case When ChatGPT appeared on the scene I was very annoyed at all the hype surrounding it. Since I’m working in the fast moving and low margin business of communication and campaigning agencies I’m surrounded by people eager to jump on the hype train when a tool promises to lessen the workload and take stuff from everyone’s plate. These discussions coupled with the fact that the training of these tools required unfathomable amounts of stealing were the reason for a big reluctance on my part when trying them out. I’m using the word stealing here on purpose, since that’s exactly the crime Aaron Swartz was accused of by the attorney’s office of the district of Massachusetts. It’s frustrating that some people can get away with the same crime when it is so much bigger. For example, OpenAI and Anthropic downloaded much more data than Aaron ever did. A somewhat related thing happened with the too-big-to-fail banks: There, the people at the top were even compensated with golden parachutes at the end. LLM companies seem to be above accountability too. Despite all this, I have slowly started integrating these tools into my workflows. I …
Read this post in context

Posted on March 25, 2026 at 10:16 a.m. by Loopwerk RSS
About nine months ago I wrote an article about my quest to simplify my web development stack. How I went from SvelteKit on the frontend and Django on the backend, to an all-Django stack for a new project, using Alpine AJAX to enable partial page updates. I’ve now been using this new stack for a while, and my approach -as well as my opinion- has changed significantly. Let’s get into what works, what doesn’t, and where I ended up. A quick recap Alpine AJAX is a lightweight alternative to htmx, which you can use to enhance server-side rendered HTML with a few attributes, turning <a> and <form> tags into AJAX-powered versions. No more full page refreshes when you submit a form. The key mechanic: when a form has x-target="comments", Alpine AJAX submits the form via AJAX, finds the element with that ID in the response, and swaps it into the page. The server returns HTML, not JSON. In the original article I used django-template-partials (since merged into Django itself) to mark sections of a template as named partials using {% partialdef %}. Combined with a custom AlpineTemplateResponse the view could automatically return just the targeted partial when the request came …
Read this post in context

Posted on March 23, 2026 at 1 p.m. by Built with Django Newsletter RSS
Hey, Happy Monday! Why are you getting this: *You signed up to receive this newsletter on Built with Django. I promised to send you the latest projects and jobs on the site as well as any other interesting Django content I encountered during the month. If you don't want to receive this newsletter, feel free to unsubscribe anytime. Sponsor This issue is sponsored by TuxSEO — your AI content team on auto-pilot. Plan and ship SEO content faster Generate practical, publish-ready drafts Keep your content pipeline moving every week Projects Reckot - Speak and We make it, event management reinvent. Your Cloud Hub - YourCloudHub.ai is a technology and digital solutions company offering IT staffing and outsourcing services along with software development, website development, digital marketing. From the Community Django Apps vs Projects Explained: A Complete Production Guide - DEV Community Building a Seamless JWT Onboarding Flow with React Router v7 and Django - DEV Community How to Show a Waitlist Until Your Wagtail Site Is Ready Support You can support this project by using one of the affiliate links below. These are always going to be projects I use and love! No "Bluehost" crap here! Buttondown - Email newsletter …
Read this post in context

Posted on March 21, 2026 at 12:05 p.m. by Timo Zimmermann RSS
I have seen more and more people talk about human.json lately and I think it is a pretty neat idea. From what I can tell it checks all the boxes I would expect from a protocol like this. The fact that it relies on browser extensions right now makes sense, but might become a limiting factor in future. Or the number of extensions needs to go up beyond the two easy ones and come to mobile as well. I am not sure this will be going anywhere beyond a few enthusiastic people, but you never know. Implementing the protocol was not much work, which is expected considering it only consists of two required values and an optional list of two more values. If you want to add it to your Django based site, I packaged everything up and you can find it on PyPI. Should you use the package? Eh, that is not an easy question. From a supply chain perspective I would say "no". It is only a few lines of code. But you never know how the protocol will evolve, so things might look more complicated in a month. I will do my best to keep up with …
Read this post in context

Posted on March 21, 2026 at noon by DjangoTricks RSS
If you are familiar with Wagtail CMS for Django, you know that you can create Wagtail pages and control their content and layout with blocks inside of stream fields. But what if you have entries coming from normal Django models through a routable page? In this article, I will explore how you can control the dynamic layout of a detail view in a routable page. Routable pages in Wagtail are dynamic pages of your CMS page tree that can have their own URL subpaths and views. You can use them for filtered list and detail views, multi-step forms, multiple formats for the same data, etc. Here I will show you a routable ArticleIndexPage with a list and detail views for Article instances rendering the detail views based on the block layout in a detail_layout stream field. 1. Project Setup Create a Wagtail project myproject and articles app: pip install wagtail wagtail start myproject cd myproject python manage.py startapp articles Add to INSTALLED_APPS in your Django project settings: INSTALLED_APPS = [ ... "wagtail.contrib.routable_page", # required for RoutablePage "myproject.apps.articles", ] 2. File Structure The articles app: myproject/apps/articles/ ├── __init__.py ├── apps.py ├── models.py # Article, Category, ArticleIndexPage ├── blocks.py # All StreamField …
Read this post in context

Posted on March 20, 2026 at noon by DjangoTricks RSS
This year, I want to bring my centralized gamified donation platform www.make-impact.org to life (at least technically). Earlier I had the version I was developing separate from the waiting list, but I decided to merge them and have a switch between the waitlist and an early preview. This allows me to have no data duplication, the possibility to create user accounts immediately, and saves hosting and maintenance costs. This guide walks through a pattern that lets you ship a temporary waitlist page while your Wagtail site is still being built, with the ability to show your progress to chosen people. If you are building a Software as a Service (SaaS) or a web platform with Django, this article is for you. The Concept A custom start page view will check for a specific cookie value. If it is unset, the visitor will be redirected to a waitlist form at /waitlist/. If it is set, the visitor will be served the Wagtail home page. All views under development will have a decorator that checks the cookie value and redirects to the start page if it is unset. There will be a special view at /preview-access/ with a passphrase form that allows …
Read this post in context

Posted on March 20, 2026 at 10 a.m. by Django News RSS
News Sunsetting Jazzband After more than a decade maintaining 80+ Python projects, Jazzband is winding down as AI-generated spam and long-standing sustainability challenges make its open, shared-maintenance model no longer viable. jazzband.co Astral to join OpenAI Astral, creators of Ruff and uv, are joining OpenAI’s Codex team to push the future of AI-powered Python development while continuing to support their open source tools. astral.sh Wagtail CMS News Wagtail Security team no longer accepts GPG-encrypted emails Wagtail’s security team has dropped GPG-encrypted email support, citing zero real-world use and modern encryption making it unnecessary while simplifying their workflow. wagtail.org Updates to Django Today, "Updates to Django" is presented by Raffaella from Djangonaut Space! 🚀 Last week we had 18 pull requests merged into Django by 15 different contributors - including a first-time contributor! Congratulations to dcsid for having their first commits merged into Django - welcome on board! The undocumented get_placeholder method of Field is deprecated in favor of the newly introduced get_placeholder_sql method, which has the same input signature but is expected to return a two-elements tuple composed of an SQL format string and a tuple of associated parameters. This method should now expect to be provided expressions meant to …
Read this post in context

Posted on March 19, 2026 at 5:56 a.m. by William S. Vincent RSS
Thoughts on the recent acquisition and what it portends for open source software.
Read this post in context

Posted on March 18, 2026 at 5 p.m. by DjangoChat RSS
🔗 Links PyCon US website Volunteer mailing list Elaine on LinkedIn and Jon's personal site 🎥 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.
Read this post in context

Posted on March 17, 2026 at 11 p.m. by Reinout van Rees' weblog RSS
In almost all my Python projects, I'm using pre-commit to handle/check formatting and linting. The advantage: pre-commit is the only tool you need to install. Pre-commit itself reads its config file and installs the formatters and linters you defined in there. Here's a typical .pre-commit-config.yaml: default_language_version: python: python3 repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml args: [--allow-multiple-documents] - id: check-toml - id: check-added-large-files - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. rev: v0.15.6 hooks: # Run the linter. - id: ruff args: ["--fix"] # Run the formatter. - id: ruff-format - repo: https://github.com/tombi-toml/tombi-pre-commit rev: v0.9.6 hooks: - id: tombi-format args: ["--offline"] - id: tombi-lint args: ["--offline"] The "tombi" at the end might be a bit curious. There's already the build-in "check-toml" toml syntax checker, right? Well, tombi also does formatting and schema validation. And in a recent project, I handled configuration through toml files. It was for a Django website where several geographical maps were shown, each with its own title, description, legend yes/no, etcetera. I made up a .toml configuration format so that a colleague could configure all those maps without needing to deal with the python code. I created a json …
Read this post in context

Posted on March 16, 2026 at 1 p.m. by Built with Django Newsletter RSS
Hey, Happy Monday! Why are you getting this: *You signed up to receive this newsletter on Built with Django. I promised to send you the latest projects and jobs on the site as well as any other interesting Django content I encountered during the month. If you don't want to receive this newsletter, feel free to unsubscribe anytime. Sponsor This issue is sponsored by TuxSEO — your AI content team on auto-pilot. Plan and ship SEO content faster Generate practical, publish-ready drafts Keep your content pipeline moving every week Projects Table of Contents Generator - Generate a clickable Table of Contents for any PDF in seconds. Free, private, no account required. Works with reports, eBooks, manuals, and papers. Jobs Senior Frontend Engineer at Weave Bio From the Community Django Admin: Building a Production-Ready Back Office Without Starting From Scratch | Medium by Anas Issath Beginner's Guide to Open Source Contribution | Djangonaut Space 2026 - DEV Community Django Tutorial - GeeksforGeeks Support You can support this project by using one of the affiliate links below. These are always going to be projects I use and love! No "Bluehost" crap here! Buttondown - Email newsletter tool I use to send you …
Read this post in context