If you’re being blocked by Medium’s paywall, this article and all its links are also available here.
I’ve been writing about (and working in) Django for almost five years now, and I’ve written a lot about specific pieces of implementation. But as I’m about to move into a new role that won’t be using Django anymore, I want to take a step back and look at how it all fits together.
This post is largely a compilation of links to both the documentation, as well as posts I’ve written about various topics related to running Django at scale in production, and some related high-level thoughts. Feel free to reach out if there are areas you’re curious about that you don’t see covered here, and I’ll see what I can do!
If you’re here, you probably either already have an application built in Django, or have it on your short-list. In case you’re still weighing your options, here are some of the reasons you might choose it:
- Built in Python, a much-loved language (for good reason!)
- Rich ecosystem of open-source third-party libraries
- Powerful Object-Relational Mapper (ORM) to simplify interacting with your relational database, and make it more secure.
- Django Rest Framework makes it easy to build APIs, either for external or internal (to drive your front-end or microservices) use.
- It’s an MVC (Model-View-Controller) framework, meaning even people who haven’t used Django before, but might be familiar with other frameworks like Rails or Spring or ASP.NET will be able to pick it up quickly. Terminology note: what other MVC frameworks call “controllers”, Django calls “views”, and what other frameworks call “views”, Django calls “templates”.
- The Django Admin panel provides basic CRUD (Create, Read, Update, Delete) functionality out of the box if you’ve defined your models, that can be leveraged until you’ve built your own interface, allowing you to get an MVP up and running more quickly. You can also add custom views and templates to it, if you need to extend the functionality a bit.
If you’re weighing Django as an option for a new project but haven’t built in it before, I definitely recommend working through their tutorial…