La documentación de Django define el modelo (model) como "una fuente de información sobre los datos, que contiene campos clave y comportamiento de los datos". Por lo general, un modelo se refiere a una tabla en una base de datos. Django es compatible con las bases de datos PostgreSQL, MySQL, SQLite y Oracle.
Los modelos contienen información sobre los datos. Estos datos se representan mediante atributos o campos. Dado que el modelo es una clase simple, no sabe nada sobre las otras capas de Django. La interacción entre las capas se realiza a través de una API.
El modelo se encarga de la lógica de negocio, los métodos, las propiedades y otros elementos relacionados con la manipulación de datos. También permite a los desarrolladores crear, leer, actualizar y eliminar objetos en la base de datos.
La vista (view) resuelve tres tareas: recibe solicitudes HTTP, implementa la lógica de negocio definida por los métodos y propiedades, y envía respuestas HTTP en respuesta a las solicitudes. Es decir, la vista obtiene datos del modelo y proporciona acceso a estos datos a las plantillas (templates) o procesa previamente los datos y luego proporciona acceso a ellos a las plantillas.
Django tiene un potente motor de plantillas y un lenguaje de marcado propio. Las plantillas son archivos con código HTML que se utilizan para mostrar datos. El contenido de los archivos puede ser estático o dinámico. Las plantillas no contienen lógica de negocio, por lo que solo muestran datos.