Django: Estructura de un proyecto y sus archivos
Una vez tengamos instalado Django podemos crear nuestro proyecto y nuestra app desde la consola de comando de windows.
Para ver que comandos tiene la consola de django podemos hacer:
django-admin help
img 1-Resultado de ejecutar django-admin help en el cmd. |
Estos comandos interactúan con tus aplicaciones, modelos, migraciones, verificaciones de configuración etc.
Para crear un proyecto ejecutamos
django-admin startproject nombre_de_tu_proyecto
Yo voy a crear un proyecto llamado calculadora. Al ejecutar el comando de arriba nos da como resultado la siguiente estructura de carpetas y archivos.
img 2-estructura de un proyecto django. |
Explicación del proyecto calculadora
calculadora
Tiene 4 archivos
__init__.py: Este archivo le dice a python que calculadora es un módulo.
wsgi.py: (Interface de puerta de enlace del servidor web)es una convención de llamada simple para que los servidores envían solicitudes a las aplicaciones web creadas en python.
asgi.py: (Interface de puerta de enalce del servidor asíncrono) permite que nuestra aplicación pueda recibir llamadas asíncronas con el servidor. Esta tecnología es el sucesor de wsgi.urls.py: Este archivo es utilizado con las aplicaciones de tu proyecto. En el interior tenemos una variable lista llamada urlpatterns. Esta contiene path o rutas(lo podes ver de esa forma) que pueden hacer referencia o "apuntantar" a otras archivos urls.py en aplicaciones.Cada path o ruta tiene una vista. Puede tener un nombre(muy útil cuando trabajas con formularios) y el patrón con el que se vincula la vista.
Una vista es un conjunto de clases y/o funciones que encapsulan la lógica de la petición. Por lo general están declaradas en un archivo llamado views.py tanto en el proyecto como en las aplicaciones.
settings.py: Este archivo contiene la configuración todo tu proyecto, tanto para la etapa de desarrollo como para la etapa de producción. Las variables que traen por defectos son:
- BASE_DIR: Construye el path de donde se encuentra el archivo settings.py. Esto lo hace de forma dinámica.
- SECRET_KEY: Es una clave criptográfica única generada por django al ejecutar django-admin startproject.
Si este valor es conocido por un atacante, este puede ejecutar código arbitrario y desactivar todas las medidas de seguridad que provee django. Las sesiones, mensajes, el restablecimiento de contraseñas de los usuarios y el uso de la firma criptográfica podrían quedar comprometidos. Toda tu aplicación web sería vulnerable. - DEBUG: En etapa de desarrollo se encarga de mostrar bien detallado donde esta el error. En etapa de producción se encarga de mostrar una página 400. Al sacar el sitio a producción esta variable debe estar puesta en True. Puedes usar el comando check Esto comprobará todas las configuraciones necesarias para sacar el sitio en producción.
- ALLOWED_HOSTS: Es una lista de cadenas con nombres de dominio/hosts que el sitio puede servir.
- INSTALLED_APP: Esta variable es una lista de aplicaciones. Las aplicaciones permiten extender las funcionalidades de tu proyecto y a su vez fomenta la reutilización de código.
- MIDDLEWARE: Permiten modificar el procesamiento de solicitudes y respuestas de Django. Básicamente son un conjunto de plugins que alteran la entrada y salida de Django.
- ROOT_URLCONF: Apunta a la ruta URLCONF raíz del proyecto.
- TEMPLATES: En esta variable se almacena el motor y búsqueda de las plantillas que usara django para la interpretación y carga de la misma.
- WSGI_APPLICATION: Apunta al archivo wsgi.py el cual tiene un objeto que sera ejecutado por el servidor interno que tiene django.
- DATABASE: Contiene las configuración de tu base de datos.
- AUTH_PASSWORD_VALIDATORS: Contiene una lista de validadores de contraseñas tales como la longitud, contraseñas comunes, combinaciones de mayúsculas, minúsculas y símbolos.
- LANGUAGE_CODE: Representa el código de idioma para la instalación.
- TIME_ZONE: Representa la zona horaria de la instalación actual. No necesariamente tiene que ver con la zona horaria del servidor.
- USE_I18N: Especifica si debe utilizar la traducción de Django.
- USE_L10N: Especifica si el formato de datos localizado se habilitará de forma predeterminada o no. Django mostrará números y fechas usando el formato de la configuración regional actual.
- USE_TZ: Especifica si las fechas y horas reconocerán la zona horaria de forma predeterminada o no. Django puede reconocer las fechas y horas de manera interna.
- STATIC_URL: Contiene el path de la localización de los archivos estáticos de las aplicaciones.
Básicamente, tus aplicaciones pueden tener archivos estáticos y vas usar STATIC_URL para decirle a Django donde se encuentran localizadas.
El archivo config tiene muchísimas opciones para configurar un proyecto. La guía de referencia la puedes encontrar en la documentación oficial de Django .
Resumen del artículo
- El comando django-admin startproject crea un proyecto.
- El comando django-admin help (Windows) lista todos los comandos del archivo manage.py
- El archivo manage.py contiene comandos que permite gestionar los componentes de nuestro proyecto (modelos,archivos estáticos para servir en producción, migraciones etc).
- El archivo settings.py contiene la configuración global de nuestro proyecto y la forma en la que van a interactuar y comportarse sus componentes.
- Una vista no es más que una función o clase que recibe datos los procesa y en base a eso puede renderizar una plantilla o devolver datos.
- Las urls son paths el cual tienen asociado una función o método. Pueden contener urls que se encuentran en otro archivo, pero siempre termina habiendo la asoción path-función/método.
Comentarios
Publicar un comentario