Aplicaciones#

Un proyecto Django está formado por aplicaciones. En este contexto podemos entender una aplicación como una «zona» o «sección» de nuestro sitio web.

Creando aplicaciones#

Vamos a empezar por lo más obvio de nuestro proyecto que serían las canciones. Crearemos una aplicación tracks:

$ python manage.py startapp tracks

Truco

Suele ser habitual usar nombres en plural para las aplicaciones, pero obviamente depende del contexto y no es una regla fija.

El comando anterior habrá creado una carpeta tracks en la raíz de nuestro proyecto con el siguiente contenido:

$ tree tracks

tracks
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py

2 directories, 7 files

Veamos para qué sirve cada uno de estos archivos:

__init__.py

Este tipo de archivos se utilizan para indicar que la carpeta actual es un paquete en Python.

admin.py

Este archivo permite especificar las características de los modelos de cara a la interfaz administrativa de Django.

apps.py

Este archivo permite «registrar» la aplicación creada y definir algunas configuraciones a nivel global.

migrations

Esta carpeta contendrá las migraciones (como ficheros) realizadas sobre los modelos de la aplicación actual.

models.py

Este archivo permite escribir los modelos de la aplicación actual.

tests.py

Este archivo permite escribir las pruebas (tests) de la aplicación actual.

views.py

Este archivo permite definir las vistas de la aplicación actual.

Instalando aplicaciones#

Para que Django reconozca una nueva aplicación en nuestro proyecto, necesitamos darla de alta («instalar») en el fichero settings.py.

Existe una variable INSTALLED_APPS que contiene una lista con todas las aplicaciones dadas de alta en el proyecto. Si miramos su contenido actual veremos lo siguiente:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Estas aplicaciones están «preinstaladas» cuando creamos el proyecto y son propias del framework Django. Nos proporcionan distintas funcionalidades:

django.contrib.admin

Interfaz administrativa.

django.contrib.auth

Sistema de autenticación.

django.contrib.contenttypes

Herramientas para trabajar con los modelos del proyecto.

django.contrib.sessions

Sistema para almacenar información en sesiones.

django.contrib.staticfiles

Gestión de archivos estáticos.

Por tanto, vamos a añadir nuestra aplicación tracks a la lista INSTALLED_APPS en el fichero settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'tracks.apps.TracksConfig',
]

Cabría preguntarse por qué se añade la línea 'tracks.apps.TracksConfig'. La clase TracksConfig que está dentro del módulo apps en la aplicación tracks es donde reside la configuración global de la aplicación. [1]

Truco

Es una convención que si una aplicación se llama matraca entonces la clase de configuración se debería llamar MatracaConfig.