Django 101: The Python Web Framework
Yona GidalevitzJune 23rd, 20157 minute read
Yona is Codal’s Technical Writer. At Codal, he is responsible for content strategy, documentation, blogging, and editing. He works closely with Codal’s UX, development, marketing, and administrative teams to produce all manner of written content. In his free time, Yona is an avid guitarist, cook, and traveler.
So you've decided to write a web application. You have picked out a responsive front-end framework, and you have decided that you would like to code the backend using Python. You have heard good things about Django, but you are not certain if it's right for you.
Django is a powerful Python MVC framework, although in the documentation it is referred to as a Model - Template - View (MTV) framework. The two terms are essentially one and the same.
Like many frameworks, Django promises its users "ridiculously fast" time-to-completion, a full feature-set, superior security, immense scalability, and incredible versatility. The price of its vast feature-set seems to be performance, as illustrated in this Python framework benchmark test.
Although it is far from perfect, it is widely considered to be among the best Python web frameworks around. Let's examine what makes Django a good framework.
Django documentation is kept organized.
Ideally, every programming language and framework should have well-organized, easily accessible documentation. Unfortunately this is often not the case - look no further than Ember, as we outlined in this post.
Full Stack Python has an excellent collection of online Django resources, including tutorials, videos, migration guides, testing information, and more.
If you are looking for a great resource on printed Django books, head on over to Two Scoops Press. They have put together a great collection of up-to-date Django books, as well as deprecated but potentially useful books.
Be wary of online and in-print Django resources that are unmaintained or out of date, such as The Django Book. While they can sometimes be useful, they should only be used by experienced Django developers that are able to identify out of date syntax and unsupported features.
Django has a very active community
One of the first things that a developer should notice about Django is that it has an extremely lively community. The "Django Users" group on Google Groups has over 44,700 threads of discussions, questions, and useful information.
If you are contributing to Django itself, however, the "Django Developers" group has over 7,600 threads aimed to make developing for the framework significantly more straightforward.
Anything that you can't find in either user group is likely to have been covered in one of the over 97,000 Stackoverflow questions, or by one of the over 37,000 Quora members following "Django" on Quora.
Django brings rapid development and deployment
When we say rapid development and deployment, we are not kidding. Django comes with a lot of functionality right out of the box.
"Django includes dozens of extras you can use to handle common Web development tasks. Django takes care of user authentication, content administration, sitemaps, RSS feeds, and many more tasks." - Django Project
By reducing the amount of code that must be written in order to accomplish basic tasks, Django frees you up to focus on more important code, all while accelerating the timeframe for completion on your project.
There are thousands of packages, plugins, and apps
When you build your backend with Django, you get access to a very large number of packages that help extend the functionality of the framework. Packages are assigned categories based on the type of service they provide.
Package categories include:
"Apps" - Small components built to offer highly specific functionality.
"Frameworks" - Expansive Django frameworks that offer broad functionality by combining multiple modules into one package.
"Other" - Useful odds and ends; anything useful that does not fall into any of the other categories.
"Projects" - Full Django webapps.
Packages make it easy to integrate services like google maps, create complex permissions, or integrate social media. In turn, the ability to include only the packages that you need allows you to code your backend quickly and efficiently.
Some of the most popular sites use Django
When you use Django, you join the ranks of many other popular websites/webapps. Some of these include:
Instagram - A highly popular photo and video sharing platform.
Pinterest - A "visual discovery" tool, and image sharing + tagging platform.
NASA - The online portal to the world-renowned United States' space agency.
National Geographic - A leader in geography, cartography, and the study of nature.
Disqus - A community discussion platform used on many popular sites.
Mozilla - Makers of the popular Firefox web browser, and open source software community.
Rdio - An internet radio platform that allows its users to create personalized stations.
The Guardian - A global news platform.