According to the Stack Overflow’s Annual Developer Survey, Django gained the sixth position with 62.1% among the total of 90,000 developers rating it as one of the most-loved web frameworks. Django is a Python-based open-source web development framework for backend web applications. This framework has been used by a number of top-rated organisations, such as NASA, Instagram, Spotify, Mozilla, Pinterest, among others.
Some of the advantages of Django are:
- This framework is cross-platform which means it is suitable for any web application project.
- Django helps developers to avoid security issues like SQL injection, clickjacking, among others.
- Since this framework uses Python languages, it makes the framework easy-to-use.
- Django provides ORM (object-relational mapper) which makes it easy to migrate and run on any applications.
Django 3.0 supports Python 3.6, 3.7, and 3.8. The final release of Django 3.0 includes a number of intuitive features as mentioned below:
Django 3.0 supports MariaDB 10.2 and higher. MariaDB is one of the most popular database servers which is made by the original developers of MySQL. This database server turns data into structured information in a wide array of applications, ranging from banking to websites. It is an enhanced, drop-in replacement for MySQL.
Django 3.0 will be made fully async-capable by providing support for running as an ASGI (Asynchronous Server Gateway Interface) application. This feature is an extension to the existing WSGI support. It will provide a standard interface between async-capable Python web servers, frameworks, and applications.
Exclusion Constraints on PostgreSQL
Django 3.0 supports PostgreSQL 9.5 and higher. The new feature of ExclusionConstraint class enables adding exclusion constraints on PostgreSQL.
Enumerations for Model Field Choices
Custom enumeration types TextChoices, IntegerChoices, and Choices are now available as a way to define Field.choices in Django 3.0. TextChoices and IntegerChoices types are provided for text and integer fields while the Choices class allows defining a compatible enumeration for other concrete data types.
In Django 3.0, the expressions that output BooleanField may now be used directly in QuerySet filters, without having to first annotate and then filter against the annotation.
Some of the other important features will include
- django.contrib.admin which will add support for the admin_order_field attribute on properties in ModelAdmin.list_display and other such.
- django.contrib.auth adds BaseBackend class to ease the customisation of authentication backends, adds get_user_permissions() method to mirror the existing get_group_permissions() method and much more.
- django.contrib.gis: This feature allows MySQL spatial lookup functions to operate on real geometries, among others.
- django.contrib.postgres: This feature includes RangeOperators which helps to avoid typos in SQL operators that can be used together with RangeField, the new AddIndexConcurrently and RemoveIndexConcurrently classes allow creating and dropping indexes concurrently on PostgreSQL, etc.
- File Storage: The new Storage.get_alternative_name() method allows customising the algorithm for generating filenames if a file with the uploaded name already exists.
With a developer community of more than 12,000 developers across 171 countries, Django has been witnessing upgrades with new features in a frequent manner. Django 3.0 alpha 1 was released on 10th September 2019 which represents the first stage in the 3.0 release cycle.
The beta 1 version of Django 3.0 has been released on the 14th of October which represents the second stage in the 3.0 release cycle. The final release of Django 3.0 is expecting on 2nd December 2019. Furthermore, Django 3.1 is expected to be released by August 2020. This release supports Python 3.6, 3.7, and 3.8.