Django is a high-level Python Web framework
A high-level Web framework is a software that eases the pain of building dynamic Web sites. It abstracts common problems of Web development and provides shortcuts for frequent programming tasks.
For clarity, a dynamic Web site is one in which pages aren’t simply HTML documents sitting on a server’s filesystem somewhere.
In a dynamic Web site, rather, each page is generated by a computer program — a so-called “Web application” — that you, the Web developer, create. A Web application may, for instance, retrieve records from a database or take some action based on user input.
Django strictly maintains a clean design throughout its own code and makes it easy to follow the best Web-development practices in the applications you create.
That means, if you think of Django as a car, it would be an elegant sports car, capable not only of high speeds and sharp turns, but delivering excellent mileage and clean emissions.
The philosophy here is: Django makes it easy to do things the “right” way
Specifically, Django encourages loose coupling: the programming philosophy that different pieces of the application should be
interchangeable and should communicate with each other via clear, concise APIs.
For example, the template system knows nothing about the database-access system, which knows nothing about the HTTP
request/response layer, which knows nothing about caching. Each one of these layers is distinct and loosely coupled to the rest.
In practice, this means you can mix and match the layers if need be.
Django follows the “model-view-controller” (MVC) architecture. Simply put, this is a way of developing software so that the code
for defining and accessing data (the model) is separate from the business logic (the controller), which in turn is separate from the
user interface.