Today I’m launching the Django 4.0 update to my book Django for Professionals. Readers who purchased the digital version on Gumroad can log in to their accounts there and download the update for free.

This is a major, major update. It took me a long time to figure out how to relate what I’ve learned the last 2 years about Django into the update.

The two biggest updates are Windows-first support and a switch from Pipenv to pip. This is something I’ve done in the 4.0 updates to my other two books as well–Django for Beginners and Django for APIs. As we learned in the Django developers survey, way more users are on Windows than macOS so now there is support for both. And while I shared the community’s excitement around Pipenv when it came out–and it still works just fine if you have it on existing site–I think for what I teach, pip is more than adequate and one less thing to install. So pip it is.

DFP 4.0

What’s New for 4.0

In bulleted format here is what’s new in the 4.0 update:

  • Django 4.0 and Python 3.10 throughout.
  • Windows-first support. I bought a Microsoft Surface laptop and have been dutifully using it several days a week. I still greatly prefer macOS but most of the world uses Windows so I have run through all the code and updated the text to ensure Windows works well.
  • New chapter devoted to Initial Set Up.
  • Using pip instead of Pipenv throughout. All virtual environments named .venv.
  • Change default project name from config to django_project.
  • Use Black for Python formatting, adopt double quotes "" over single quotes ''.
  • Update Bootstrap section from 4.6 to 5.1.
  • Much expanded Performance chapter with code examples and discussion of select_related and prefetch_related.
  • Numerous small changes throughout describing concepts better, adding more examples.


To be honest, writing and updating this book takes a lot more out of me than my other two. I think it’s very tough to stay current on intermediate/advanced best practices let alone write about it. So many things fall into an “it depends” bucket but I don’t want to repeat endless debates in the book. I want to provide context, advice, and demonstrate best practices where I can.

A lot more of my time is spent figuring out where the bleeding edge is, making my own decisions after consulting with peers, and then presenting it to readers. Focusing on beginner content is more about the teaching than the content itself or me at this point, so it is a little easier.

Heroku has also had a number of public difficulties recently and is used for deployment. I wish I didn’t have to cover platform-specific deployment at all since it changes often but I do want to show how to get a site online. Heroku’s days seem to be clearly numbered. There are a number of interesting hosting platforms out there and several more coming. It is something I will be watching closely and perhaps changing in the future.

The Future

I plan to finally start working in earnest on a Python book now. I’ve been saying that for about 4 years now but a combination of Covid, having a third child, donating a lot of volunteer time to Django, and other things have gotten in the way. I’m excited to focus on something new for a change.

I will still do 4.1 and 4.2 updates for the books. They will likely be less dramatic than the 4.0 updates have been.

I want to have an online-only version of the books rather than the current constellation of different sites, providing tutorials and previews online, only to switch over to either Gumroad PDFs or Amazon.

The big question for me, I suppose, is where to host everything. I’d really like to just have one site for all my professional work. As much as I like the name and something else Python-specific… at the end of the day it’s just me. So I should probably stop hiding behind website names and just put it all on my site. If you like what I create, here’s more of it. And if/when I branch into realms beyond solely Python and Django–I’d like to teach HTML, CSS, SQL, JavaScript–I can do it in one place.

Thanks for reading if you’re still here at the bottom of the article! I hope you enjoy the Django for Professionals 4.0 update.