Modern Django - Preface
The intention of this document is to provide a guide for setting up and deploying Django-based applications in 2017.
My previous introduction and thoughts on why I decided to write this guide can be found here: Understanding the Need: A Django Deployment Guide
Why Django?
Since it’s release in 2005, Django has found itself as a tried and tested project, providing solutions to many of the problems engineers face when creating web applications. Engineers find Django as the ringmaster of the backend, no longer needing to recreate tools that almost every web application needs, such as request handlers or Object Relation Mapping. We have recently seen a great number of engineers trying to use other Python web frameworks, such as Flask and Pyramid, thinking they would only need to write several portions by hand. Unfortunately, many of these developers, much like those creating entirely new web frameworks in Go, end up reinventing the wheel hundreds of times over. The tools they do end up recreating by hand and use in production environments are nowhere near as powerful, efficient, or tested as those made by the Django Foundation.
With the understanding of stability and ease of access through Python, a number of small companies have set up shop with Django over its direct competitor Ruby on Rails. Even larger companies, such as Instagram, Pinterest and Spotify, whose user traffic is in the millions per hour deploy with Django. I believe that is more than enough merit for the weekend enthusiast or small startup.
Much like the model of Instagram, I believe that Django should be on the backend, and solely the backend. In 2017, we should be using frontend JavaScript Frameworks and leave Django and it’s friends to do the heavy lifting on the backend. Using Django to serve a RESTful API will allow us to future proof our applications, both web and mobile, in the now stabilizing JavaScript ecosystem.
Modern Django: Guide Structure
The structure of this guide will be as follows:
- Introduction of the topic
- Technologies and explanation of them that will be used in the section
- A detailed walkthrough and explanation of the implementation with code snippets
- Followed by a summary and link to the finished section on GitHub
Currently I believe in posting images of code snippets, as this forces users to not just copy/paste. This ensures two things:
- That users who follow along are engaged and place snippets in the correct places AND
- That users have, at the very least, written the code by hand at least once
So…
If any of that interests you, please follow along in the coming weeks and correct me when I am wrong or inform me of different workflows / opinions / and tools. Currently I have a high level list of what I would like to cover (not including the small topics) found here:
The List: Django Deployment and What To Cover
Please feel free to comment on the above link if you feel something should be amended or if an explanation is needed for a given topic.
While I am writing a guide for deployment, I hope it is not for a singular use case and that it can be a great resource to not only myself and Django enthusiasts, but to all developers who wish to call themselves Fullstack Engineers™.
The GitHub for the guide will be located here if anyone would like to watch and keep up to date on the guide as it is released.
Best and thank you,
Dylan Stein
For updates on Modern Project please check out: