Los proyectos Django se organizan internamente en aplicaciones. Cada aplicación representa una sección o parte de nuestro proyecto. En el caso de que necesitemos añadir una nueva aplicación tendremos que hacer uso de las herramientas que Django nos proporciona.
Teniendo en cuenta que el entorno de desarrollo está basado en Docker debemos tener los contenedores corriendo (docker-compose up) y ejecutar lo siguiente (quizás en otra terminal):
## Situados en el raíz del proyecto...
$ mkdir apps/<app> # creamos la aplicación en la carpeta de apps
$ docker-compose exec web ./manage.py startapp <app> apps/<app>Basados en el diseño de nuestro proyecto, se deben llevar a cabo algunos pasos adicionales para lograr visualizar la aplicación correctamente.
- Añadir
<app>a la listaINSTALLED_APPSenmain/settings.py. - Añadir
<app>a la constanteAPPSen gulp/config.js. - Configurar plantillas.
- Añadir estilos CSS (si procede).
- Añadir código JS (si procede).
- Para poder crear el elemento correspondiente en el menú de la cabecera, añadir la entrada a la aplicación en commons/templates/header.html.
Se recomienda la creación de una plantilla <app>/templates/<app>/base.html para la nueva <app> con este esqueleto:
{% extends "base.html" %} <!-- commons/base.html -->
{% load utils %}
<!-- Sólo en el caso de necesitar estilos propios css -->
{% block style %}
<link rel="stylesheet" href="{{ assets|get_asset_key:'<app>/custom.min.css' }}">
{% endblock style %}
<!-- Sólo en el caso de necesitar código propio js -->
{% block js %}
<script src="{{ assets|get_asset_key:'<app>/custom.min.js' }}"></script>
{% endblock js %}
custom.min.cssycustom.min.jsson ficheros generados automáticamente por el procesogulpque corre en background.
El resto de plantillas de la aplicación, al menos, deberían extender la plantilla base y se recomienda que incluyan una directiva definiendo su propia clase CSS para evitar conflictos posteriores:
{% extends "<app>/base.html" %}
{% block body_class %}<app>-<subsection>{% endblock %}
...
Primero que nada hay que añadir la aplicación a la constante APPS de gulp/config.js para que gulp compile los ficheros de estilos.
A continuación hay que crear el archivo <app>/static/<app>/css/main.scss con, al menos, el siguiente contenido:
@import 'apps/commons/static/commons/css/base';
.<app>-<subsection> {
...
}Se recomienda crear nuevos ficheros
.scsse importarlos desdemain.scsspara modularizar el código.
En el caso de que se necesite código JS se debe crear el archivo <app>/static/<app>/js/main.js
Se recomienda crear nuevos ficheros
.jse importarlos desdemain.jspara modularizar el código.