What is Django? Meet Python’s All-Star Web Framework
Django is the web framework for perfectionists on a deadline. This Python-based web framework offers a clean and pragmatic way to build web apps. It’s appealing to the developers who take the time to produce clean code and the developers who want to move fast—but not break things.
But what is a web framework, and why is Django one worth learning? Let’s investigate.
Last Updated July 2020
Finally create that App + fully-functioning user database in this crash course to building a REST API | By Mark Winterbottom, Brooke RutherfordExplore Course
What is a web framework?
In its most generic form, a framework in software provides a reusable, standardized template of features for performing repetitive tasks with ease.
A web application framework provides a baseline of features for web applications. A web framework and web application framework are the same. For simplicity’s sake, I’ll use web framework in the rest of this article.
Before web frameworks, developers spent hours creating features for a new website from scratch. Developers realized that most functionality is the same from website to website.
In the spirit of open-source collaboration, some experienced developers created web frameworks to standardize the development process. This makes it easier for other developers to build web applications quickly. In addition to Django, popular frameworks include Flask and Angular.
Without a framework, a developer might spend months creating the necessary components to build a robust web application to handle user registration, login, database integration, and more.
To dig deeper into how frameworks speed up development, let’s look at the Udemy website.
Udemy sells courses through udemy.com, which requires users to create an account and log in to take classes, complete assignments, and write reviews. By definition, it’s a web application. Like other web applications it shares standard functionality:
- Handling requests from a web browser and returning a response
- Mapping URL paths to specific code blocks
- Allowing users to sign up and login (authentication)
- Storing and retrieving data from a database
Web frameworks like Django provide the foundation to create this type of functionality with little to no coding.
Take a look at the diagram below. It compares the building of a website like udemy.com with a framework versus building the site without a framework.
Notice how a framework allows teams to focus their time and resources on the features unique to your app, without reinventing the wheel on more mundane development tasks.
Now that we understand the benefits of a web framework, we’ll look at what makes Django so great.
8 benefits of the Django framework
Django has a “batteries included” philosophy. It comes with many built-in functionalities that do the heavy lifting on things like security. Some of the most noteworthy Django features include:
Most web apps use an authentication system to store data and provide a unique experience for users. While the authentication may look different from app to app, the underlying functionality is often the same. This includes storing a username and password and verifying it when the user logs in.
Though the functionality is the same, Django makes authentication is a lot easier than other frameworks. For instance, Flask—a minimalist framework‚—doesn’t offer this feature. If you used Flask to build a web app, you’d have to create an authentication system by writing the code yourself or using a third-party library, then integrating it with Flask. It’s tedious.
Django comes with a comprehensive authentication system. It handles the underlying logic for creating users, checking passwords, and keeping track of authenticated sessions as a user navigates your app. It also gives you the option to manage permissions and create groups for your users.
A feature unique to Django is the Object Relational Mapper (ORM). This tool integrates your app with relational databases without writing a single line of SQL code.
Without ORM, one would write hundreds of lines of SQL to create the database tables for an application. This code would be specific to the database software and manually executed on any database attached to the project.
Django reduces this work by providing a database-agnostic approach to structuring tables.
You simply define the required table and fields as a “Django model”, which looks like this:
class StockItem(models.Model): """A stock item in the inventory""" owner = models.ForeignKey('User', on_delete=models.CASCADE) name = models.CharField(max_length=255) created_at = models.DateTimeField(auto_now_add=True)
Django uses this model to generate and execute the SQL needed to create a new table. It’s useful if you’re adding a new variable to an ecommerce site.
Additionally, the Django ORM keeps track of any changes to the table and applies them where needed.
Django’s database-agnostic design means hard coding an application to work with a specific database isn’t necessary. It also comes with support for many popular relational databases such as SQLite, Postgres, MySQL, MariaDB, and Oracle.
Another time-saving feature of Django (and my personal favorite) is the Django admin.
Django admin is an interface that lists, views, creates, and updates objects in a database through the browser. The only coding required is a single line to register models with the admin site.
This convenient feature alone saves many weeks of programming.
Django REST Framework
Websites are not the only type of application you can create with Django. With the Django REST Framework (DRF), you can build Web APIs to power mobile, desktop, and progressive web applications.
The Django REST Framework speeds up the development of Web APIs through features like:
- Browsable API interface for development (no more running tedious cURL commands to test your API)
- Auto-generate API documentation
- Serializers to validate requests and standardize responses
- Authentication systems such as Token auth
The Django REST Framework is often used in conjunction with Django to add interactive features to the front-end of Django.
Building an app involves lots of small decisions about how to structure code. This is a time-consuming process at best. At worst, it can lead to team conflicts as developers often have strong opinions about software design.
Examples of these design decisions can include:
- How to organize code into separate files
- How to configure your application
- Where to put unit tests
- Which testing framework to use
Django’s robust documentation explains recommended approaches with clear examples. Additionally, the Django CLI tool lets you create template apps in seconds.
Made by experts of the open-source community, you can trust that Django’s design recommendations align with industry best practices.
How Django approaches security is notable. It’s not tacked on as an afterthought. Security is baked into the Django software.
For instance, Django’s authentication system encrypts passwords in the database and provides the required functions for validation. Passwords are never stored in cleartext. This is best practice in software, but when there’s an inexperienced development team or a tight deadline, it’s where developers may cut corners. Django prevents that by providing this functionality for you.
Additionally, Django includes many other security features:
- Cross-site request forgery (CSRF) tokens to block unauthorized commands from executing
- Form validation to ensure user data is consistent and clean
- Database integration to mitigate the risk of SQL injection attacks
Documentation is crucial for any programming language or framework. Proper documentation can be the difference between taking minutes or weeks to understand a problem.
Django has excellent documentation that explains basic to advanced topics. In my opinion, Django’s documentation is the most comprehensive of all the frameworks.
Django’s popularity fosters a community of global developers happy to help each other. This is great for learning because many developers will answer questions in online communities such as the Django IRC and Stack Overflow. They identify and fix Django bugs issues early, maintaining the enhanced security and stability of the software.
Django and Python
Finally, one of the most significant benefits of Django is that it’s built in Python. Django is a high-level Python web application framework. They go together like peanut butter and jelly.
Python is the golden child of programming languages. It ranked in the top three most loved programming languages for the last three consecutive years. It has a beginner-friendly learning curve and is perfect for programming tasks related to artificial intelligence, web applications, mobile apps, data processing, and more. Because it’s so in-demand, Python is one of the top programming languages to learn for career development. Django is a technology that makes Python even more powerful!
While there are many web application frameworks for Python, Django’s features make it stand out. It’s a favorite among social networks (Instagram, Pinterest, Reddit), publishing sites (The Washington Post), tech companies (Spotify, NASA), and yours truly. Discover for yourself the world of Django and all it has to offer.
Top courses in Django
Django students also learn
Empower your team. Lead the industry.
Get a subscription to a library of online courses and digital learning tools for your organization with Udemy for Business.