# Django
Django is a full-featured, high-level [[Web Frameworks]] written in Python designed for rapid development and clean, pragmatic design, streamlining the process of creating complex, database-driven websites. Django follows a batteries-included approach, providing a comprehensive set of tools and libraries, making it easier to build web applications without "reinventing the wheel."
![[Pasted image 20230824171647.png]]
- See [[Integrating Django & React.js]].
- Django features a full-stack framework where MTV structures the entire application from frontend to backend—from how data is stored and manipulated (Model), to how it's presented to the user (Template), to how user requests are processed (View).
- Django follows the Model-View-Controller (MVC) pattern (though in Django terms it's often referenced as Model-View-Template or MVT). This means the data (Model), the presentation of that data (Template), and the actions or methods applied to the data (View) are separate, leading to clear layers in the backend architecture.
- Includes [[Django's Object-Relational Mapping (ORM)]] that abstracts database operations. This encourages a high-level, Pythonic way of dealing with the database, where database tables are represented as Python classes ([[Django Models]]). This can simplify data operations and migrations but might also influence decisions regarding database design and querying.
- Includes [[Django Rest Framework (DRF)]] which makes it easier to make APIs.
- Monolithic frameworks like Django naturally align with layered architectures. However, even with these frameworks, you can adopt microservices if the project's complexity demands it.
- Django's monolithic nature could push developers to consider horizontal scaling, caching solutions, or even breaking parts of the backend into separate services or microservices if necessary.
- URL routing system points to view
![[Pasted image 20230824171908.png]]
![[Pasted image 20230824171454.png]]
![[Pasted image 20230824171834.png]]