Skip to content

Django conceptos

En esta página vamos a cubrir elementos conceptuales y explicaciones extra que se ven al trabajar con el framework django.

Parte 1

Trabajo realizado

  • Comandos básicos
    • Proyecto
    • Aplicaciones
    • Ejecutar server desarrollo
  • Gestión de URLs
  • Vistas

Estado de los ficheros

Estructura general del trabajo realizado

>tree .
.
├── db.sqlite3          <- Aquí están los datos (en el futuro será una base de datos)
├── manage.py           <- Script de administración
├── misitio             <- Elementos generales del proyecto
│   │                     \- Proyecto = Conjunto de apps
│   ├── asgi.py
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-38.pyc
│   │   ├── settings.cpython-38.pyc
│   │   ├── urls.cpython-38.pyc
│   │   └── wsgi.cpython-38.pyc
│   ├── settings.py
│   ├── urls.py         <- Configuración de las rutas del proyecto
│   │                     \- Para no concentrar todas las url aquí
│   │                     \- incluimos las urls de las apps
│   │                     \- tenemos una app especial admin que veremos después
│   └── wsgi.py
└── polls               <- La primera app del proyecto
    ├── admin.py
    ├── apps.py
    ├── __init__.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── __pycache__
    │   ├── __init__.cpython-38.pyc
    │   ├── urls.cpython-38.pyc
    │   └── views.cpython-38.pyc
    ├── tests.py
    ├── urls.py         <- Configuración de las rutas de la app
    └── views.py        <- "Vistas" de la app

Pero... ¿no estamos ante MVC?

MVC es un patrón cuyo origen está en los años 70

MVC fue introducido por Trygve Reenskaug (web personal) en Smalltalk-76 durante su visita a Xerox Parc6​7​ en los años 70, seguidamente, en los años 80, Jim Althoff y otros implementaron una versión de MVC para la biblioteca de clases de Smalltalk-80.8​ Solo más tarde, en 1988, MVC se expresó como un concepto general en un artículo9​ sobre Smalltalk-80.

-- Wikipedia

Existen muchas variantes MVC, MVVM, MV*, MV...What?

En concreto django lo podemos definir así ver orignial

  • Modelo: Datos y lógica de negocio. Es lo único que no cambia entre las distintas versiones de MVC
  • Vista: Como simple representación de los datos serían los templates
  • Controlador: Como elemento que intercambia mensajes en Modelo y Vista, se lleva a cabo por el propio framework (urls, settings) y la ejecución de las view (mensajes a modelos y elección de template)

Parte 2

Trabajo realizado

  • Fichero de configuración
  • Backend de base de datos
  • Aplicaciones instaladas
  • Modelos
    • Definición
    • Uso
  • Área de administración
    • Configuración
    • Crear super usuario
  • Migraciones
    • Generación
    • Ejecución

Estado de los ficheros

.
├── db.sqlite3            <- Almacen de los datos reales.
|                            \- con el settings podemos usar un motor real
├── manage.py
├── mysite
│   ├── asgi.py
│   ├── __init__.py
│   ├── __pycache__      <- Compilación para más velocidad
|   |                       \- se omite el contenido .pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── polls
    ├── admin.py        <- Información para el área de admin
    ├── apps.py         <- Configuración de la aplicación
    ├── __init__.py
    ├── migrations          <- Plan de migración (makemigrations)
    |   |                     \- si queremos ejecutar es: migrate
    │   └── 0001_initial.py <- primera migración de nuestra app 'polls'
    ├── models.py
    ├── tests.py
    ├── urls.py
    └── views.py

Parte 3

Resumen de tareas

Chuleta!!

  • Definir modelo
  • Sincronizar DB
    • makemigration
    • migrate
  • Registrar en admin
  • Definir un template <- html e información
  • Definir url
  • Definir vista
    • Pedir información a model
    • Mandárselo a un template