Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
Python Project-Local Virtualenv Management Redux
One of my first TIL entries was about how you can imitate Node’s node_modules semantics in Python on UNIX-like operating systems. A lot has happened since then (to the better!) and it’s time for an update. direnv still rocks, though. -
Mentorship, coaching, sponsorship: three different — and equally important — tools for developing talent
One of the main responsibilities of a leader/manager is helping their staff develop. Mentorship, coaching, and sponsorship are import tools in the staff development toolbox. Good leaders should be adept in all three, and know when (and when not) to use each. In my work with new managers, I sometimes see confusion about these three different tools, and I see people using them in the wrong circumstances. So here’s a glossary, a high-level explanation of what these three things are, how they differ, and where to use them. -
Django News - 🎉 Sarah "New Django Fellow!" Boyce 🎉 - Mar 29th 2024
News Welcome our new Django Fellow Sarah Boyce is the newest Django Fellow! Read more about her background as a software developer and active member of the Django community. djangoproject.com PyPI halted new users and projects while it fended off supply-chain attack PyPI temporarily halted new project creation and new user registration following an onslaught of package uploads that executed malicious code on any device that installed them. arstechnica.com DEFNA! Board Member Recruitment Django Events Foundation North America (DEFNA), the non-profit behind DjangoCon US is looking for another board member. defna.org Updates to Django Today 'Updates to Django' is presented by Pradhvan from Djangonaut Space! Last week we had 12 pull requests merged into Django by 7 different contributors - including 2 first time contributors! Congratulations to Laurent Lyaudet, and Sharon Woo for having their first commits merged into Django - welcome on board! In Django 5.1, an optional srid argument was added to FromWKB and FromWKT GIS functions that allows to specify the SRID (Spatial Reference System Identity) of the resulting geometry. Django Newsletter Wagtail CMS Technical writing, asking for help, and other things I learned during my Outreachy internship A few lessons learned by the author during their … -
Discussing Open Source funding and sustainability on the Sustain podcast
I was invited on the Sustain podcast to discuss my recent rant about open source sustainability. I talked about my reaction to the criticism that open source maintainers receive when they take funding, and how this is a personal issue for me – maintainers aren’t abstract ideas to me, they’re my friends. We discussed my call for a more expansive definition of open source, and got into some of the nuance about some of the problems this can cause. -
Handling Database Migrations with Alembic
This article looks at the high-level architecture of how Alembic works, how to add it to your project, and some common workflows you’ll encounter. -
Start Polishing - Building SaaS #187
In this episode, we attacked the issue list. JourneyInbox is live and serving user and now it’s time to start polishing and building the full set of features. There are so many easy targets to fix that we focused on a few clear improvements to user experience and the user interface. -
Start Polishing - Building SaaS with Python and Django #187
In this episode, we attacked the issue list. JourneyInbox is live and serving user and now it’s time to start polishing and building the full set of features. There are so many easy targets to fix that we focused on a few clear improvements to user experience and the user interface. -
The Django admin is a CMS
The Django admin is a CMSThe post Why is the Django Admin “Ugly”? and the discussion on Mastodon around it finally motivated me to write down my thoughts regarding the recurring theme in Django land that the Django administration interface isn’t a CMS (Content Management System). I think that this is misguided and needlessly limits the discourse around what the admin’s current functionality is and the ideas what it could be and already is. A web content management system is about website authoring for users who do not need to be web programming experts in their own rights. Django was created at the Lawrence Journal-World newspaper. The admin itself was created to allow quickly spinning up new websites, where the admin interface was used by content managers to fill in the content while programmers finalized the rest of the website. So obviously the admin interface was a system used to manage content1 from the beginning. Sure, the Django admin site documentation states: One of the most powerful parts of Django is the automatic admin interface. It reads metadata from your models to provide a quick, model-centric interface where trusted users can manage content on your site. The admin’s recommended use … -
Django: Write-up on optimizing the system check framework
Django’s system check framework provides fantastic protection for configuration mishaps. It’s like a targeted linter that runs when you start Django commands. It takes advantage of runtime setup to inspect the true state rather than infer it from the source. I love the system check framework: I have contributed to several built-in checks, maintain a package of extra checks, and have a whole chapter on it in Boost Your Django DX. Unfortunately, the framework has gained a reputation for being slow, at least on larger projects. For example, Jeff Triplett recently tooted: My #Django magic wand would disable checks running on all the things by default unless explicitly turned called or turned on. Q: Why does it take so long to run manage.py for my project? A: Django's manage.py runs checks which scan every Python file by default with apparently no cache and takes double-digit seconds to minutes for non-trivially sized projects with no easy way to disable. You can pass --skip-checks. I’ve heard and seen similar advice from others. Anders Hovmöller’s package django-fastdev goes as far as monkey-patching checks to run in a separate thread, so they don’t block runserver startup. I always felt dismayed by this observation. It … -
Keynote at PyCon Lithuania 2024
From April 2nd to April 6th I'll be at PyCon Lithuania 2024 in Vilnius to present a keynote about 25 years of glorious coding mistakes (mostly in Python). Audrey and Uma will be accompanying me, making us the first members of the Lithuanian side of my family to return there in over 100 years! At the conference I'll be joined by my old friend Tom Christie, author of HTTPX, Starlette, and Django REST Framework. I hope to meet many new friends, specifically everyone there. At the sprints I'll be joined by my awesome wife, Audrey, author of Cookiecutter. Come and join us! -
Keynote at PyCon Lithuania 2024
From April 2nd to April 6th I'll be at PyCon Lithuania 2024 in Vilnius to present a keynote about 25 years of glorious coding mistakes (mostly in Python). Audrey and Uma will be accompanying me, making us the first members of the Lithuanian side of my family to return there in over 100 years! At the conference I'll be joined by my old friend Tom Christie, author of HTTPX, Starlette, and Django REST Framework. I hope to meet many new friends, specifically everyone there. At the sprints I'll be joined by my awesome wife, Audrey, author of Cookiecutter. Come and join us! -
Django News - Django REST Framework 3.15 - Mar 22nd 2024
News Django REST framework 3.15 Release Notes The first major release since September 2022 is here! Now with Django 5.0 and Python 3.12 support as well as a long list of new features. django-rest-framework.org 🐍 Python Insider: Python 3.10.14, 3.9.19, and 3.8.19 is now available Python 3.10.14, 3.9.19, and 3.8.19 security releases are now available. blogspot.com Updates to Django Today 'Updates to Django' is presented by Raffaella Suardini from Djangonaut Space! Last week we had 17 pull requests merged into Django by 8 different contributors. All built-in session engines now provide an async API thanks to the hard work of Jon Janzen, Mariusz Felisiak and Andrew Chen Wang. Last week a regression got fixed in Django 5.0 where admin could be rendered with two id attributes on the clear checkbox. Django Newsletter Wagtail CMS What’s New in Wagtail CMS 6.0: Email Newsletter Package, UI Designs, Universal Listings There are loads to share in this episode, including features in the latest 6.0 release, a preview of the new email newsletter package, and future design possibilities. youtube.com Sponsored Ad crunchydata.com Articles Django: Fuss-free use of Homebrew GDAL/GEOS libraries on macOS GeoDjango requires the GDAL and GEOS spatial libraries. Adam Johnson has some … -
Post-launch Punchlist - Building SaaS #186
In this episode, we had a bunch of issues to resolve post-launch. I set the code that causes trials to expire, made updates to who receives prompt emails, and added some polish to the sign up process and interface to make it clear what will happen in the flow. After those modifications, we worked through a set of smaller changes like setting up Dependabot and adding a missing database index. -
Post-launch Punchlist - Building SaaS with Python and Django #186
In this episode, we had a bunch of issues to resolve post-launch. I set the code that causes trials to expire, made updates to who receives prompt emails, and added some polish to the sign up process and interface to make it clear what will happen in the flow. After those modifications, we worked through a set of smaller changes like setting up Dependabot and adding a missing database index. -
Django’s Evolution - Jacob Kaplan-Moss
Jacob’s personal site Latacora PyCon 2017: Let’s Build a Web Framework! Producing Open Source Software bookPyCon 2015: Keynote PyCon 2019: Assets in Django without Losing Your Hair DjangoCon Europe 2014: Django Without DjangoDjangoCon 2018 Keynote: Adrian Holovaty and Jacob Kaplan-Moss PyCon Canada 2013: Python is Everywhere Snakes and Rubies django-template-partialsInformal roadmap & retrospective workshops for Django Deno django-simple-deploy Support the ShowLearnDjango.comButtonDjango News newsletter -
blacknoise – ASGI app for static file serving
blacknoise – ASGI app for static file serving Note This blog post consists of the blacknoise README at the time of publishing. blacknoise is an ASGI app for static file serving inspired by whitenoise and following the principles of low maintenance software. This is pre-alpha software and everything is subject to change. I’m not even sure if blacknoise should exist at all or if the energy wouldn’t be better spent improving whitenoise or other tools. Feedback and contributions are very welcome though! Using blacknoise with Django to serve static files Install blacknoise into your Python environment: pip install blacknoise Wrap your ASGI application with the BlackNoise app: from blacknoise import BlackNoise from django.core.asgi import get_asgi_application from pathlib import Path BASE_DIR = Path(__file__).parent application = BlackNoise(get_asgi_application()) application.add(BASE_DIR / "static", "/static") BlackNoise will automatically handle all paths below the prefixes added, and either return the files or return 404 errors if files do not exist. The files are added on server startup, which also means that BlackNoise only knows about files which existed at that particular point in time. Improving performance BlackNoise has worse performance than when using an optimized webserver such as nginx and others. Sometimes it doesn’t matter much if … -
Django: Fuss-free use of Homebrew GDAL/GEOS libraries on macOS
GeoDjango requires the GDAL and GEOS spatial libraries. On macOS, you can use Homebrew to install these, but they won’t be picked up by default since they live in a non-default library directory, /opt/homebrew/lib. Django will fail to start with an exception: Traceback (most recent call last): ... File "/.../site-packages/django/contrib/gis/gdal/libgdal.py", line 60, in <module> raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal", "GDAL", "gdal3.4.0", "gdal3.3.0", "gdal3.2.0", "gdal3.1.0", "gdal3.0.0", "gdal2.4.0", "gdal2.3.0", "gdal2.2.0"). Is GDAL installed? If it is, try setting GDAL_LIBRARY_PATH in your settings. You can follow the message and set GDAL_LIBRARY_PATH, and similarly GEOS_LIBRARY_PATH. But that leaves you with a change in your settings file that you need to be careful not to commit, otherwise it will break the project for other environments. Also it’s a per-project solution, requiring repetitive repetition whenever you encounter the error. My preferred alternative is to add symlinks in the default library directory, /usr/local/lib, pointing to the Homebrew library location: $ ln -s /opt/homebrew/lib/libgdal.dylib /usr/local/lib/libgdal.dylib $ ln -s /opt/homebrew/lib/libgeos_c.dylib /usr/local/lib/libgeos_c.dylib That’s a once-and-for-all solution that will work for all projects, and persist through upgrades. dyld library paths Another option you may see suggested is to set either DYLD_FALLBACK_LIBRARY_PATH or DYLD_LIBRARY_PATH to include … -
Talking about Django's history and future on Django Chat
I was on the Django Chat podcast to about Django’s history, the creation of the DSF, my recent return to the DSF board and my goals there, and the things I’m excited about for Django going forward. Here are some highlights from the interview. -
Podcasts I like listening to
Podcasts I like listening toI discovered listening to podcasts about one year ago. Previously, I never knew why anyone would want to listen to people talk when they could listen to music or nothing, but that has changed a bit. So, here’s a list of podcasts I’m currently listening to on a regular basis. Tech Won’t Save Us I have recently stumbled over Tech Won’t Save Us, a Podcast which is critical of the technological “progress” offered by Silicon Valley elites. It’s a great antidote for the generative AI hype. I still have some stupid hope that AGI will solve our problems because maybe people will trust a computer more than scientists that something has to be done about the combined crisis we’re facing as humans. Who knows. I do not want to be too negative about it though, there are positive news if you’re looking in the right places. I myself do not write about those bigger issues as much as I used to. I support those more important issues elsewhere. Generative AI is certainly not helping me in my work. I do not want a computer to generate code which I have to review and maintain when I … -
Weeknotes (2024 week 11)
Weeknotes (2024 week 11)Estimates Jacob wrote an excellent post on breaking down tasks. I did like the post a lot. Maybe I’ll write a longer reply later, but for now just this. There definitely are good reasons for the pushback against estimation, and it’s really not just that some people lack professionalism. Releases django-cabinet 0.14.1: Mini release containing a Turkish translation. It’s always nice if software is used. feincms3 4.6: Fixed a bug where the move form wouldn’t use a potentially overridden ModelAdmin.get_queryset method. form-designer 0.24: Updated the package for django-recaptcha 4.0. html-sanitizer 2.3.1: Fixed an edge case sanitization bug (luckily without security implications). django-content-editor 6.4.2: django-content-editor now again supports transitioning plugin fieldsets when opening and closing thanks to CSS grid’s ability to animate the maximum height of an element. Also, the initialization in 6.4 was badly broken. django-prose-editor 0.2: See the announcement blog post from Wednesday. -
Django News - NGI Zero Grant for django-allauth - Mar 15th 2024
News Python Insider: Python 3.13.0 alpha 5 is now available Python 3.13 is still in development. This release, 3.13.0a5, is the fifth of six planned alpha releases. python.org PyPI: Malware Reporting Evolved PyPI now has a new, improved way to report malware, using a "Report project as malware" button to project pages. pypi.org Updates to Django Today 'Updates to Django' is presented by Pradhvan from Djangonaut Space! Last week we had 26 pull requests merged into Django by 17 different contributors - including 7 first time contributors! Congratulations to Can Huynh, Michail Chatzis, Kasun Herath, Leandro de Souza, cuinix, umair mehmood, and Moe for having their first commits merged into Django - welcome on board! Check out the awesome goodies stuffed into 5.1! Boosted performance of django.urls.resolvers._route_to_regex() function, benchmark results showcasing significant speed enhancements. django.contrib.auth decorators, @login_required, @permission_required and @user_passes_test now support wrapping asynchronous view functions. Apart from Django core updates, the community has some cool news to share too! Django is participating in Google Summer of Code this year. Applications open March 18 and close April 2, 2024. The first session of Djangonaut Space just wrapped up and the organizers thrilled with what all the Djangonauts have achieved! Wishing … -
Pybites Podcast #155
Episode 155 of Pybites podcast with the title “Django, Open Source & Pycon Conferences, Paolo Melchiorre’s Developer Odyssey” -
django-prose-editor – Prose-editing component for the Django admin
django-prose-editor – Prose-editing component for the Django adminDuring the last few days I have been working on a prose-editing component for the Django admin which will replace the basically dead django-ckeditor in all of my projects. It is based on ProseMirror, in my opinion the greatest toolkit for building prose editors for the web. Here’s a screenshot: django-prose-editor is in active development; it’s available on PyPI and is developed in the open here on GitHub. The version at the time of writing is 0.2, and it’s not yet used in production environments, only in staging/preview environments. That will soon change though. Researching alternatives to django-ckeditor I have spent a lot of time evaluating alternatives. All of them are great choices, and I don’t want to bash any of them. But, I didn’t feel good betting on any of the choices from the WYSIWYG editors grid on Django Packages. A few packages have potential licensing issues. CKEditor 5’s change to the GPL is what basically killed django-ckeditor. The upcoming TinyMCE 7 version will also change to the GPL according to the TinyMCE GitHub repository. Froala only has a free trial. The django-summernote app doesn’t have a dedicated maintainer, so I wouldn’t … -
So you've been reorg'd...
I’ve been through close to a dozen reorgs. This article contains the advice I wish I’d been given earlier in my career when I didn’t yet have that experience. Reorgs are disruptive, and nobody really tells you what to do in the wake of one. It’s easy to feel adrift, scared for your future, and uncertain about how to behave. Some of that fear is warranted: your job security probably goes down in the months following a reorg. But confusion and chaos aren’t necessarily signs that the reorg will go poorly, and there are things you can do to help give you and your team a better chance of emerging successfully. -
Estimating Software Projects: Breaking Down Tasks
Something missing from this series on estimation, until now, has been a discussion of how to “break down” a project into a well-defined task list. I’d not previously written about this because, to me, it’s largely intuitive. But it isn’t for everyone, so this post fills the gap, and explains in detail how I break down projects into a task list.