OpenBootcamp Django course
Se llama Model Template View (MTV) y es una variante de Model View Controller (MVC).
- Un usuario realiza una petición a una URL
- Acude al diccionario que asocia cada URL a un controlador
- El controlador contiene la lógica y se comunica con el modelo
- El modelo contiene los datos. Puede tratarse como una clase y crear objetos.
- El modelo se conecta a la base de datos
- La base de datos devuelve información al modelo
- El modelo devuelve la información al controlador
- El controlador pasa esa información a la vista
- La vista muestra la información al usuario
USUARIO ---> URL ---> CONTROLADOR <--> MODELO <---> BASE DE DATOS
^ |
| |
| V
----------------------- VISTA
Es igual que el MVC con la diferencia de que a los controladores los llamammos vistas y a las vistas las llamamos plantillas.
USUARIO ---> URL ---> VISTA <--> MODELO <---> BASE DE DATOS
^ |
| |
| V
----------------- PLANTILLA
Tenemos:
- 1 directorio: [nombredelproyecto] *
- 1 archivo: manage.py, que se encarga de manejar el proyecto
Cada aplicación es gestionada como un paquete (una carpeta). Cada una tiene su archivo init.py
Los archivos asgi.py y wsgi.py son auxiliares y nos ayudan a trabajar con servidores de prueba y otras acciones auxiliares.
El archivo urls.py asocia urls con las vistas correspndientes.
Por úlitmo, settings.py establece las configuraciones del paquete. Por ejemplo, incluye apps instaladas por defecto, utilidades de middleware, la configuración de la base de datos, entre otros.
Vamos a crear una vista que devuelva un "Hola mundo":
- Crear la estructura de base de datos necesaria para poder funcionar. Cada vez que modifiquemos la estructura de datos:
python manage.py migrate
- Lanzar el servidor
python manage.py runserver
- Creamos el archivo de vistas views.py. Definimos la función con sus parámetros. Las vistas siempre van a tener, por lo menos, un parámetro, que es la petición.
- Asociamos la vista con la url
path('saludo/', views.saludo, name='saludo')
Vamos a crear urls dinámicas incluyendo parámetros en ellas.
- Escribir la url con el parámetro entre <> y marcando el tipo de dato
path('post/<int:id>/')