What is Django?
What is Django?
What is Django?
Django—pronounced “Jango,” named after the famous jazz guitarist Django Reinhardt—is a free, open source framework that was first publicly released in 2005. Django facilitates “rapid development and clean, pragmatic design.” The Django web framework, deployed on a web server, can help developers quickly produce a web frontend that’s feature-rich, secure and scalable.
Getting to know the Django web framework
Do you need more information to discover what is Django and how it's used? Do you want some hands-on experience working with a web app created using the Django web framework? IBM offers a step-by-step tutorial for using IBM Cloud services to track activity and monitor the health of a Python-based Kubernetes application written using the Django web framework and running on the IBM Cloud.
With all the Python web frameworks to choose from, why pick Django web framework? It might not be the easiest to use and it’s certainly not the newest. Nevertheless, the Django web framework might be the right fit when you’re building a web app that’s involves cross-site scripting and is expected to handle a large number of users or a complex set of features, such as API connectivity or user authentication. Based on the number of projects on GitHub, it's also very popular.
Packaging essential features
Django web framework has been in use for more than a decade and has been thoroughly tested and enhanced by a very active community. It even has a non-profit; the Django software foundation promotes, supports and advances the Django web framework. Django’s greatest strength is its large feature set—with more than 10,000 Django packages, the framework covers virtually anything you’ll need a web application to do. Packages include APIs, content management systems, user authentication, form validation and CAPTCHA protection.
The user base for Django web framework is supportive and dedicated, full of talented Django developers volunteering their time and expertise to develop, improve and patch the Django software foundation. Your application can benefit from this commitment by tapping into the well-designed packages available to anyone building with Django.
Make database management more Python-like
Starting a Django project allows you to build your application’s entire data model in Python without needing to use SQL. Using an object-relational mapper (ORM), Django converts traditional database structure into Python classes to make it easier to work within a fully Python environment. Django-MySQL supports the JSON data type and related functions.
In Django, your database tables become Python classes. Web applications access and manage data through Django models. The fields of the database are simply converted into class attributes. If you’re familiar with class attribute definition in Python, you can easily design and manage a Django database.
Django Web Framework offers a shortcut to full integration with your application’s database. It provides CRUD (create, read, update, delete) functionality, HttpResponse and cross-site scripting, supplies user management capabilities, offers software administration features and more. You import the packages, connect to your database and then get back to work developing the parts of your application that make your product unique.
Create dynamic pages with templates
Because Django is designed to be used for web app development, it needs a way to easily create dynamic HTML that displays your user’s unique data. The Django application produces that dynamic HTML with a built-in templating engine called the Django template language (DTL).
An HTML template allows Django developers to combine static elements (including design elements such as colors, logos, or text) with data (such as user names or locations) to create a new web page on the fly. With model-view-controller (MVC), if you want your application to greet a user by name when they log in, you can build a template that displays the static text (“Welcome to the site, X”) then use a dynamic placeholder to automatically display the user’s first name from your database. When the page renders, it will combine the dynamic elements with the static ones to create a seamless user experience.
When answering, "What is Django", we must talk about what special features Django offers for security. Web apps are frequent targets of hackers, especially applications that store user login information or financial data. Django offers features to help protect your application and your users.
One of the biggest risks for sites that accept user-entered data is that a malicious user will inject code with their data that can have a disastrous effect on your system. To protect against attacks like these, Django templates automatically escape common HTML characters in any user-entered field. For example, it will automatically convert ‘<’ to ‘<’ to make it difficult to inject malicious code into your program. Django protects from SQL injection in a similar way, reinterpreting unauthorized commands so that users can’t sneak their own code into your database.
Web developers can also count on Django APIs to automatically use cross-site request forgery (CSRF) protection to insert user-specific secret tokens into POST requests. As a result, web developers can prevent malicious users from duplicating other POST requests to masquerade as authorized users.
The protection of Django goes beyond its explicit security features: security efforts are enhanced by the extensive experience and expertise of the Django user base. If you build your entire web app from scratch, you run the risk of accidentally introducing a security vulnerability into your module. Django packages are widely used, open source and well reviewed by web developers, so you can be more confident that they’ll protect your data.
One of the biggest challenges in web development is scalability. Your application must handle exactly the number of active connections that are required at any given time. If the connections exceed your estimate, your users will experience lags and downtime. Estimate too conservatively and you’ll pay for bandwidth and web servers you’re not using. You need an application that can grow as you gain more users.
Django web framework makes scaling easy. Because a Django app can manage your user sessions, you can add more instances of your application and transfer the user’s experience across the instances without losing data. Many Django project developers also use a cache manager such as Varnish to pre-load the static elements of the site for users.
You’ll need to carefully configure the cache manager to avoid accidentally caching your entire site, including the dynamic elements. A poorly configured cache could also lead to sharing data from one user to the next. You can avoid over-caching by using Django’s native (but limited) cache framework in conjunction with an external cache manager to free up performance resources while being selective on what is stored.
When answering the question, "What is Django," one answer is that it is a highly scalable web framework. Just how scalable is it? Instagram and Disqus are among the very large sites that use Django to support their huge user bases.
Django and IBM
Want some hands-on experience working with an app created using the Django framework? IBM offers a step-by-step tutorial for web developers using IBM Cloud services to track activity and monitor the health of a Python-based Kubernetes application written using Django and running on the IBM Cloud.