miércoles, 3 de abril de 2024

Estructura del proyecto django

Archivos y carpetas

Esta es la estructura del proyecto de django nada más crearlo.



Archivo manage.py

El archivo manage.py nos ayuda a ejecutar comandos administrativos. Por ejemplo, podemos ejecutar un help.

python manage.py --help

Archivo db.sqlite3

Es la base de datos de nuestra aplicación. sqlite3 es una base de datos de tipo SQL.

Es una base de datos simple que se usa habitualmente para pruebas, pero no para desarrollo.

django oficialmente soporta las siguientes bases de datos:

  • PostgreSQL
  • MariaDB
  • MySQL
  • Oracle
  • SQLite

Carpeta mysite

Contiene el código fuente de nuestra aplicación.


Archivo __pycache__

Este archivo solo sirve para guardar código que ya compiló Python


Archivo __init__py©

Este archivo es imprescindible que exista aunque esté vacío.

Este archivo solo sirve para decirle a Python que la carpeta mysite es un módulo de python.

Este archivo está más relacionado con el funcionamiento de Python que con el de Django.


Archivo settings.py

Este archivo permite configurar nuestro proyecto.

Este archivo solo sirve para decirle a Python que la carpeta mysite es un módulo de python.

Veamos algún ejemplo de instrucciones de configuración.


Variable ALLOWED_HOSTS = []

Le indica al servidor qué direcciones tiene permitido consultar.


Propiedad DEBUG = True

Le indica si estamos en modo desarrollo o en modo producción.

Cuando esté como DEBUG = True nos permite obtener más información cuando estemos desarrollando.


Propiedad SECRET_KEY

Permite mejorar la encriptación de los usuarios o permite mejorar la seguridad de los datos compartidos entre el navegador y el servidor.

Contiene valores generados aleatoriamente.

SECRET_KEY = 'django-insecure-xe-ryt5i.../...87cek$'

Variable BASE_DIR = Path(__file__).resolve().parent.parent

Indica los directorios que contiene el proyecto.

Contiene valores generados aleatoriamente.


Variable INSTALLED_APPS

Es una variable en forma de lista que contiene las aplicaciones que contiene nuestro proyecto.

django permite dividir un proyecto en diferentes partes que aquí se llaman aplicaciones.

La lista contiene las aplicaciones que se instalan por defecto.

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

Variable MIDDLEWARE

Es una variable en forma de lista que indica a Django si va a procesar algún tipo de datos de alguna forma específica.

Esta es la lista que se ha instalado inicialmente.

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Variable TEMPLATES

Aquí podremos establecer nuestros Templates.


Variable WSGI_APPLICATION

Aquí podremos indicar módulos extra cuando estemos en modo de producción.

WSGI_APPLICATION = 'mysite.wsgi.application'

Variable DATABASES

Es una variable en forma de diccionario que contiene las bases de datos a las que está conectado nuestro proyecto.

Por defecto la base de datos es SQLITE3.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

Variable AUTH_PASSWORD_VALIDATORS

Es una variable en forma de lista que contiene las formas de validar contraseñas al autenticar usuarios.

Por defecto la base de datos es SQLITE3.

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

Variable STATIC_URL

Aquí podremos establecer en que directorio se encuentran los archivos estáticos, por defecto se establece que esta carpeta será 'static'.

La carpeta 'static' no viene creada por defecto, pero lo habitual es que nosotros la creemos y en ella guardemos los llamados archivos estáticos.

El contenido estático es cualquier archivo que se almacena en un servidor y es el mismo cada vez que se entrega a los usuarios. Se consideran estáticos los archivos HTML, CSS, JS, las imágenes, mp3, mp4, ico y otros elementos que no cambian dinámicamente en función de las interacciones del usuario..

STATIC_URL = 'static/'

Archivo urls.py

Aquí se indican las URLs que los clientes pueden visitar.

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]code>

Por defecto, solo viene la ruta "admin/' pero posteriormente iremos añadiendo otras.


Archivos asgi.py y wsgi.py

Estos archivos están más relacionados con la forma de servir nuestro proyecto en producción.

django se ocupa de crear el proyecto pero no del despliegue, para lo cual tendremos que tocar estos archivos.

No hay comentarios:

Publicar un comentario