Django is the most popular and mature Python web framework. It was created by Adrian Holovaty and Simon Willison to power newspaper websites. In 2005 they released it to open source. Today, Django is one of the most popular web frameworks that runs thousands of websites including Instagram, Mozilla, National Geographic, and Disqus.
Django is a framework with "batteries included". Besides basic functionality like URL routing and HTTP-related utilities, it provides an ORM, database migrations, a template engine, forms validation, authentication system, and much more. Django's killer feature is a built-in admin interface that lets you manage your app's content with a UI.
Django's "batteries included" approach is the opposite of that taken by micro-frameworks like Flask, which provide only a minimal set of features and leave you to integrate any extra functionality through third-party libraries. One advantage of Django for beginners is that it makes a lot of choices for them.
Django shines in building full-stack web applications with server side rendering. It wasn't designed for building APIs like FastAPI, but Django REST framework makes Django a good tool for this job as well.
Links: djangoproject.com, Django on GitHub, Django (Wikipedia), Awesome Django, Web Frameworks for Python.
Related topics: Python.
Here's 2 amazing resources to learn Django:
Django documentation (docs.djangoproject.com)
free • resource • 2023
The documentation is so good that you'll hardly need other resources to learn Django. And it's big. The Getting started guide shows how to build a simple poll app. Topics cover key parts of Django in more detail. The are also How-to guides to answer common questions and API Reference to look up specific settings, commands, functions, and classes. Beware that Topics cover many things you'd expect to find in API Reference. Use Table of contents and Index to navigate around efficiently.
Django Styleguide (github.com)
free • resource • by HackSoftware • 2023
An opinionated, practical guide on building maintainable Django apps, particularly API services.