Web frameworks abstract the common aspects of building web sites and APIs and allow you to build solid applications with less effort.
I’m confident that Django will be one of the major players in the future of web development and it deserves to be considered.
I think that developers should always be open minded and consider the best solution for concrete problems, not only following the last trend but taking into account different approaches. That is why I thought this article could be a little reminder.
Django is open source and it is maintained by the Django software foundation, an independent Non-Profit 501(c)(3), focused on promoting, supporting and advancing this framework.
Django was designed to help build software (not only dynamic web apps) as quickly as possible. It has a well-deserved reputation for being highly productive.
Django will let you create a complete website or API from scratch in short time span so it has become a strong technological foundation for lots of companies.
Python is an interpreted, object-oriented, dynamic language and it is considered one of the most readable programming languages which has greatly contributed to its popularity.
First, Django is built on Python which is one of the most popular languages. According to TIOBE, Python is ranked in third position in the list of most popular programming languages. Therefore you will find that the ecosystem and the community is huge.
This also means that there are more developers available that could fit your needs when you decide to expand your team and start hiring.
Talking about popularity, Django is considered the most popular Python framework, followed by Pyramid, and Flask and according to Statista, in 2020 Django is ranking among the most used web frameworks https://www.statista.com/statistics/1124699/worldwide-developer-survey-most-used-frameworks-web/
Companies like Instagram, Pinterest, Disqus, The Washington Post, Bitbucket, Udemy and Mozilla use Django in their production websites.
The documentation is one of the strong points of Django. In my honest opinion it is really excellent and instructive. In fact most Django developers learn Django from official tutorials. It is thorough, cross-referenced and well versioned and it covers all the Django features in a very detailed way.
Tutorials, reference guides, how-to articles and recipes provide a comprehensive and deeply view of the framework and describe how it works and how to use it
The release process is very well documented and reflects the extreme care that Django Project puts on satisfying actual industry development cycles, by smoothing changes between versions as much as possible.
According to Django’s website: “The plan is to have a new feature release every 8 months and a new long-term support release (LTS) every 2 years. LTS releases are supported with security updates for 3 years.”
Django’s batteries included philosophy means that the framework has everything necessary to develop a complete web application. It lets you focus on your business logic.
Django has lots of built-in modules and open-source packages to create anything from scratch very easily and without reinventing the wheel. There are literally thousands of high quality 3rd party libraries that can help accelerate your development.
- Requests - HTTP client
- Django-Rest-Framework - ReST API endpoint
- pytz - Timezone support
- Pillow - Image Manipulation
- django-templated-email - css in mail templates
- django-social-auth - oauth autentication
...and many more...
Django is one of the most secure web frameworks.
It is implemented in Python, which has excellent security track record.
Furthermore, Django was also designed with security in mind. The security mechanisms already developed in Django can prevent your website or app from most of the attacks like – SQL Injection, XSS, CSRF, Clickjacking, and many more.
Are you thinking of writing a database middleware by yourself?
Django comes with ORM
The ORM (object-relational mapping ) is an abstraction layer between the database and your web application.
It is compatible with most major SQL databases and makes possible, thanks to its powerful API, to accessing and maintaining your data from python code, not SQL.
The key here is that you won’t code using SQL sentences but an abstraction that supports any SQL database.
This abstraction provides a declarative model to describe your schema and common operators to perform any kind of query you need.
Anyway, you can still use SQL if you want.
ORM has core support for mysql, mariadb, postgresql, oracle and sqllite and works with third party packages to support other database systems like Microsoft SQL Server or IBM DB2 among others.
It's difficult to imagine a project where data model doesn´t change throughout development or production stages.
Migrations is a very unique feature of Django. It detects changes in your data model declarations and generates automatically SQL sentences to adapt the database schema to them.
It is also able to generate "data migrations" to apply transformations to data.
An administration backend is a must have for any project and Django has done a great job with the admin interface.
Django provides a Built-in admin panel: a custom and extendable admin panel by default. This admin panel is highly configurable and it can be a great interface for your staff in order to maintain data. You can even use themes to customize the appearance to your liking.
There are lots of tools Django provides to assist you with SEO such as the Django SEO framework, django-robots, the sitemap framework, the redirects app...
There is much more to write about Django. I will be very pleased to write more concrete articles about features/libraries I have experimented with in some of my projects. For example I would like to write about scalability in Django in another article.
If you have any questions, feel free to comment below.