Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
You probably don’t need a CMS
Many people quickly reach for a big CMS package for Django, when often this is overkill. Here’s how to use a simple Django model with a CKEditor 5 WYSIWYG field, including embedded media like YouTube. -
Customizing Django admin fieldsets without fearing forgotten fields
Customizing Django admin fieldsets without fearing forgotten fields When defining fieldsets on Django modeladmin classes I always worry that I forget updating the fieldsets later when adding or removing new model fields, and not without reason: It has already happened to me several times. Forgetting to remove fields is mostly fine because system checks will complain about it, forgetting to add fields may be real bad. A recent example was a crashing website because a required field was missing from the admin and therefore was left empty when creating new instances! I have now published another Django package which solves this by adding support for specifying the special "__remaining__" field in a fieldsets definition. The "__remaining__" placeholder is automatically replaced by all model fields which haven’t been explicitly added already or added to exclude1. Here’s a short example for a modeladmin definition using django-auto-admin-fieldsets: from django.contrib import admin from django_auto_admin_fieldsets.admin import AutoFieldsetsModelAdmin from app import models @admin.register(models.MyModel) class MyModelAdmin(AutoFieldsetsModelAdmin): # Define fieldsets as usual with a placeholder fieldsets = [ ("Basic Information", {"fields": ["title", "slug"]}), ("Content", {"fields": ["__remaining__"]}), ] I have used Claude Code a lot for the code and the package, and as always, I had to fix bugs … -
Django News - Python 3.14.0a7 and every Python now available - Apr 11th 2025
News Six Python releases (3.9 to 3.13) and a new 3.14.0a7 are now available Not one, not two, not three, not four, not five, but six releases! Is this the most in a single day? blogspot.com Annual meeting of DSF Members at DjangoCon Europe DSF annual meeting at DjangoCon Europe enables community discussions on current and future projects, engaging both in-person and remote DSF members. djangoproject.com PEP 750 – Template Strings PEP 750 Template Strings (t-strings) were accepted and will be added to Python 3.14. python.org Updates to Django Today 'Updates to Django' is presented by Abigail Afi Gbadago from the DSF Board and Djangonaut Space!🚀 Last week we had 21 pull requests merged into Django by 13 different contributors - including 4 first-time contributors! Congratulations to 송준호, gtossou🚀, Kelvin Adigwu🚀 and bbkfhq for having their first commits merged into Django - welcome on board!🎉 This week’s Django highlights: Field selection on QuerySet.alias() after values() has been prevented from adding an aliased value to the result set. IndexError crash when annotating an aggregate function over a group has been fixed. Tuples containing None are now discarded during lookups. Serialization support has been added for ZoneInfo objects in migrations. Setuptools have … -
Goodbye JourneyInbox - Building SaaS #218
In this episode, I declared to the stream that I’m done working on JourneyInbox as a SaaS product. I didn’t see any meaningful market adoption, so I’ve decided to pivot the project to serve only my personal needs. I used the stream to do a retrospective on the project and then convert the core logic to use Go to simplify when I need to run on my server. -
Maps with Django⁽³⁾: GeoDjango, Pillow & GPS
A quick-start guide to create a web map with images, using the Python-based Django web framework, leveraging its GeoDjango module, and Pillow, the Python imaging library, to extract GPS information from images. -
PySpark 101: Introduction to Big Data with Spark
Unlock the PySpark for Big Data. This is a beginner-friendly course designed to introduce you to Apache Spark, a fast and scalable distributed computing framework. This class covers the fundamentals of PySpark, including: -
Running Background Tasks from Django Admin with Celery
This tutorial looks at how to run background tasks directly from Django admin using Celery. -
Weeknotes (2025 week 15)
Weeknotes (2025 week 15) Djangonaut Space We have already reached the final week of the Djangonaut Space session 4. I had a great time as a navigator and am looking forward to participate more, but for now I’m also glad that I do not have the additional responsibility at least for the close future. We have done great work on the django-debug-toolbar in our group, more is to come. Progress on the prose editor I have done much work on django-prose-editor in the last few weeks and after a large list of alphas and betas I’m nearing a state which I want to release into the wild. The integration has been completely rethought (again) and now uses JavaScript modules and importmaps. The ground work to support all of that in Django has been laid in django-js-asset. The nice thing about using JavaScript modules and importmaps is that we now have an easy way to combine the power of modern JavaScript customization with easy cache busting using Django’s ManifestStaticFilesStorage. A longer post on this is brewing and I hope to have it ready soon-ish. As a sneak peek, here’s the way it works: from django_prose_editor.fields import ProseEditorField content = ProseEditorField( extensions={ … -
Tips for Tracking Django Model Changes with django-pghistory
Django and its admin interface are a big part of why Caktus uses Django, but the admin's ability to log database changes is limited. For example, it shows only changes made via the Django admin, not via other parts of the site. We've written previously on the Caktus blog about django-simple-history, a tool we use to track model changes in the admin and other parts of our Django projects. django-simple-history works well for some cases, but as a Python solution, it is not able to track changes made directly in the database with raw SQL. Over the last year, we've been using yet another tool, django-pghistory, to track data changes in Postgres tables with 5+ million records, so I thought I'd write a short post with some of the things we've learned over this time. Track changes selectively django-pghistory works using Postgres triggers, which are a great solution for tracking and recording changes at a low level in the database (no matter what initiated the changes). That said, there are two caveats to this approach which are worth noting: The triggers need to be removed and re-added during schema changes. django-pghistory handles this for you, however, we found it makes … -
Announcing RSSfilter.com: a Trump filter for RSS feeds, built with Django
I love RSS feeds, but it’s not ideal that you’re stuck with all the articles that are in the feed. So I built RSSfilter.com, offering a way to filter the feed based on keywords and categories. -
BoundField vs iommi
In Django 5.2 we got a way to easier customize attributes of forms. Adam Johnson posted an example on mastodon, which I’ve slightly abbreviated below: class WideLabelBoundField(BoundField): def label_tag(self, contents=None, attrs=None, label_suffix=None): if attrs is None: attrs = {} attrs['class'] = 'wide' return super().label_tag(contents, attrs, label_suffix) class NebulaForm(Form): name = CharField( bound_field_class=WideLabelBoundField, ) To set a single CSS class on a single label, you have to create an entire class. Let’s look at the same thing in iommi: class NebulaForm(Form): name = Field.text( label__attrs__class__wide=True, ) But, you might object, what if you need to run some code to customize it? Like if the example didn’t just set "wide" as the value, but set it to "wide" only for staff? Not only is this also easy in iommi, I would argue it’s even easier and cleaner than in the BoundField case above: class NebulaForm(Form): name = Field.text( label__attrs__class__wide=lambda user, **_: user.is_staff, ) -
Django: what’s new in 5.2
Django 5.2 was released last Wednesday, another exciting step forward for our favourite web framework. It comes with a composite of new features, contributed to by many, some of which I am happy to have helped with. Below is my pick of highlights from the release notes. If you’re upgrading, please try my project django-upgrade. It will automatically update old Django code to use new features, fixing some deprecation warnings for you. It includes two fixers for minor changes in Django 5.2. (There have been talks of making django-upgrade an official project, but we haven’t got there yet.) Automatic model imports in the shell The first headline feature is this lovely DX booster: The shell management command now automatically imports models from all installed apps. Automatic imports are a real time-saver, making it a lot easier to use the shell for ad-hoc queries. Run shell and use your models immediately; no import statements are needed. When you start the command, it reports the number of automatically imported objects: $ ./manage.py shell 2 objects imported automatically (use -v 2 for details). ... In [1]: Book.objects.count() 717 By default, those objects are just your model classes. Bump up the verbosity with -v … -
Announcing RSSfilter.com
I love RSS feeds, but it’s not ideal that you’re stuck with all the articles that are in the feed. So I built RSSfilter.com, offering a way to filter the feed based on keywords and categories. -
Django News - Django 5.2 is here! - Apr 4th 2025
News Django 5.2 released Django 5.2 is released! A few highlights are: All models are automatically imported in the shell by default. Composite primary keys support. Overriding a BoundField got a lot easier And much, much more. Read the full release notes for all the details. djangoproject.com Django security releases issued: 5.1.8 and 5.0.14 A security fix for a potential denial-of-service vulnerability. djangoproject.com Django REST framework 3.16 Announcement The latest release now fully supports Django 5.1 and the upcoming 5.2 LTS as well as Python 3.13. django-rest-framework.org 💍 Announcing The Great Django Webring Just in time for April 1st, Jeff launched The Great Django Webring. 💍 webology.dev Sponsored Link 2 MongoDB Django Backend: Open Source & Ready! Contribute or explore! The official MongoDB backend for Django is now on GitHub. Dive into the code and help shape the future of Django and MongoDB integration. Try it today! fnf.dev Articles Deleting a Django Application from a Multi-Site Kubernetes Cluster Efficiently remove a Django application from a multi-site Kubernetes cluster by identifying and deleting the relevant ingress, deployments, and namespaces before completing DNS, IaC, and database cleanups. caktusgroup.com Talks I want to see at DjangoCon US 2025 Tim Schilling writes a number … -
PyCon US 2025 - Elaine Wong & Jon Banafato
PyCon US 2025 Jon Banfato personal website Elaine Wong personal websitePyCon US Hatchery Program PyCon Startup RowConference Chats NICAR 2025 pyladies pycon.org (lists many of the Python conferences around the world and includes an events calendar)SponsorThis episode was brought to you by HackSoft, your development partner beyond code. From custom software development to consulting, team augmentation, or opening an office in Bulgaria, they’re ready to take your Django project to the next level! -
Django News - 20 PRs Merged into Django Core This Week Alone! - Mar 28th 2025
Updates to Django Today 'Updates to Django' is presented by Abigail Afi Gbadago from the DSF Board and Djangonaut Space!🚀 Last week we had 20 pull requests merged into Django by 14 different contributors - including 4 first-time contributors! Congratulations to mguegnol, YQ, Filip Owczarek and Ahmed Nassar for having their first commits merged into Django - welcome on board!🥳 This week’s Django highlights: The environment variable HIDE_PRODUCTION_WARNING has been changed to DJANGO_HIDE_PRODUCTION_WARNING to align with Django's naming conventions. The URLIZE_ASSUME_HTTPS setting has been added to enhance security and smooth transition to HTTPS which aligns with Django's deprecation policy. The ADMINS and MANAGERS settings have been changed to lists of strings (also with a deprecation period). Django Newsletter Wagtail CMS aria-label is a letdown Analysis of aria-label usage on Wagtail sites shows 34% of instances are likely faulty, advocating for enhanced linting, proper label alternatives, and improved accessibility documentation. wagtail.org Sponsored Link 2 MongoDB Django Backend: Open Source & Ready! Contribute or explore! The official MongoDB backend for Django is now on GitHub. Dive into the code and help shape the future of Django and MongoDB integration. Try it today! fnf.dev Articles Smoke test your Django admin site Use parametric … -
Cakti Share Their Favorite Tools For Streamlined Workflows
Let’s jump into it! At Caktus, we’re always looking for tools that help us streamline our workflows, increase productivity, and make our day-to-day tasks more efficient. Whether you're managing projects, writing code, or debugging, the right tools can make all the difference. Here are some of our favorite tools that we love using to get the job done! Keanya: Project Manager Django Documentation As I transition from software development into technical project management, I don’t always have the cycles to write code as much as I would like. However, I aim to maintain my technical knowledge and skills. One of my favorite tools to achieve this is the tried and true Django documentation, which is comprehensive and incredibly user-friendly. The documentation breaks down complex concepts into digestible sections, making it fairly simple to find what you need. It is organized logically, so you can easily move from one section to another without feeling lost. This documentation isn't just a reference guide; it's also a learning tool. It covers everything from Django’s core concepts to advanced features, with plenty of examples and use cases that help contextualize the information. For a technical project manager like me, the ability to access this … -
Upgrade Smarter, Not Harder: Python Tools for Code Modernization
Upgrading projects is somewhat equivalent to flossing, you know you have to do it, but rarely make time for it. After all, if the project is in active development, there are exciting new features to build. And we all know that new features > project upgrades. Well not to worry, Caktus wants to make you aware of some tools that will save you from considerable repetitive work & time while simultaneously modernizing your codebase. Combined, these tools will automate part of the upgrade process, decreasing the likelihood of neglecting parts of the codebase. Switch to f-strings with flynt flynt is a tool to automatically convert a project's Python code from old "%-formatted" and .format(...) strings into Python 3.6+'s "f-strings". Add the following to your .pre-commit-config.yaml file: - repo: https://github.com/ikamensh/flynt/ rev: 1.0.1 hooks: - id: flynt Now run pre-commit run --all-files to apply the changes. Uprade to the latest Python syntax with pyupgrade pyupgrade is a tool to automatically upgrade Python syntax to newer versions. Add the following to your .pre-commit-config.yaml file: - repo: https://github.com/asottile/pyupgrade rev: v3.19.1 hooks: - id: pyupgrade args: [--py311-plus] Now run pre-commit run --all-files to apply the changes. Upgrade your Django code with django-upgrade django-upgrade is a … -
How to report a security issue in an open source project
So you’ve found a security issue in an open source project – or maybe just a weird problem that you think might be a security problem. What should you do next? -
Python Leiden (NL) meetup: serialisation in Python - John Labelle
(One of my summaries of the second Python Leiden (NL) meetup in Leiden, NL). Nice subtitle for the talk: "python serialisation: this ain't your father's cruesli"... :-) He wants to show us how dangerous it is to de-serialize content provided by someone else. His examples are at https://github.com/airza/deserialization_labs Serialisation: converting a data structure living in memory into data you can store on disk or send over. Deserialisation is converting it back into a python object. There are interoperable formats like json and xml. Most languages have their own specific methods: python has pickle. Serialising a dict or list is often easy. json.dumps({"some": "structure"}) But what if you've got some non-standard data structure like a python object? json serialisation won't work out of the box. And if you've got huge data structures, json (being human-readable) is slow and huge. Pickle stores python objects in some binary format on disk. Fun fact: pickle was added to python in 1995, json only exists since 2006. I'll paste one of his examples to make clear how picle works: import pickle from tsukimi import Tsukimi cat = Tsukimi("Fluffy", "Empty") pickle.dump(cat, open("tsukimi.pickle", "wb")) Deserialising works like this: import pickle cat = pickle.load(open('tsukimi.pickle', 'rb')) print(cat.fur) print(cat.brain) Pickle … -
Python Leiden (NL) meetup: Rendering spatial data in 3d using zarr, jax, babylon.js and DuckDB - Jesse K.V.
(One of my summaries of the second Python Leiden (NL) meetup in Leiden, NL). He's working with civil engineering, hydrology and weather data. And... he wanted to toy with 3D models. His example site: https://topography.jessekv.com/ . You can click almost anywhere in the world and get the upstream catchment. (I checked it: yes, it seems to work pretty well!) He runs all requests through a single asyncio python thread. As a personal challenge he wanted it to handle the heavy load of a hacker news post. In the end, it worked fine. One async python thread was more than enough. One of the tricks he used was to preprocess as much as reasonable so that most clicks are direct lookups in a database (vector data). Depending on the size of the selected area, he uses more detailed rasters for small areas and coarser ones for big areas. He wanted a mostly-working prototype quickly, so he experimented with LLMs. Generating math code was mostly bad, but the UI code was OK. He used duckdb with a spatial extension. Duckdb uses GDAL vector routines. This is what he used to pre-process the catchment areas on his M1 mac laptop. Afterwards, he exported … -
Python Leiden (NL) meetup: how to use uv for dependency management - Michiel Beijen
(One of my summaries of the second Python Leiden (NL) meetup in Leiden, NL). uv is the new python packaging solution that everybody should be using. He demoed it in a standard demo django wagtail project that still had a requirements.txt. Creating a virtualenv and doing a pip install worked, but it took a bit of time. Next, he tried the venv/pip compatibility layer of uv. So uv venv and uv pip install -r requirements.txt. Oh... python -m venv .venv took 3 seconds, and uv venv 0.04 seconds. Wow. The uv pip was also much faster. Wow. "Faster" is nice in development, but also when running your test in a CI enviroment (like github actions). uv can also manage your python installations. It downloads a stand-alone python for you when needed, for instance if you need a version you don't have locally. Lastly, he added a pyproject.toml and put the dependencies from requirements.txt into the pyproject.toml instead. Calling uv run manage.py automatically activates the virtualenv, install everything and run manage.py just like you'd have called python manage.py. Installing it in such a way creates an uv.lock file with all the pinned packages just such as uv downloaded them. The file … -
Django News - Django 5.2 RC1, Python 3.14 Alpha, and New Security Discussions - Mar 21st 2025
News Django 5.2 release candidate 1 released The final opportunity for you to try out a composite of new features before Django 5.2 is released. djangoproject.com Python 3.14.0a6 Release Python 3.14.0a6 alpha (Pi Day release) introduces deferred annotation evaluation and improved interpreter performance, offering potential efficiency gains for Django-based projects. python.org Discussion #154262: Ability to make GitHub issues and pull requests private when they disclose a vulnerability to the public Django Fellow Sarah Boyce proposes enabling project owners to mark pull requests private when disclosures expose vulnerabilities, thereby restricting unauthorized access and reducing malicious exposure risks. github.com Django Software Foundation Meeting minutes: DSF Board monthly meeting, March 13, 2025 The board discussed automating Contributor License Agreement emails, proposed GitHub-based bylaws updates, and coordinated community events at PyCon US and Italia 2025. djangoproject.com DSF member of the month - Cory Zue Cory Zue, a seasoned Django developer and entrepreneur, excels in innovative project creation, advanced Django guides, and promoting community engagement. djangoproject.com Accessibility and inclusivity at FOSDEM 2025 FOSDEM 2025 highlighted inclusive web practices through Django-enabled sessions on automated accessibility testing, secure WebAuthn implementation, and innovative localization approaches. djangoproject.com Updates to Django Today 'Updates to Django' is presented by Abigail Afi … -
Onboarding Form and Template - Building SaaS #217
In this episode, I updated my new onboarding form on the School Desk app. This form is vital for the first experience of new users, so I spent a lot of time making sure it will do what is needed. -
Built with Django Newsletter - 2025 Week 12
Hey, Happy Wednesday! 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. Sponsors This issue is sponsored by CodeRabbit an AI Code Reviewer that provides context-aware feedback, refactoring suggestions and highlights code security issues. In plain terms, you finally get a senior level developer reviewing your code! The best news is that it is completely free for any public repo! If you ask them nicely they might even give you more stuff for free. I've been using it to develop my projects, including this one and I can't recommend it enough. At the very least, you should give it a try and judge for yourself. Projects CAD Software Hub - Your Complete CAD Software Directory Cabot - Self-hosted, easily-deployable monitoring and alerts service - like a lightweight PagerDuty Papermerge - Open Source Document Management System for Digital Archives (Scanned Documents) Flagsmith - Open Source Feature Flagging and Remote Config Service. People - User-centric and …