Fundamentos de Django

1

Entornos Virtuales y Configuración de Django en Python

2

Instalación y configuración de Django con pip y django-admin

3

Arquitectura MBT en Frameworks Web: Model, View y Template

4

Modelo, Vista y Plantilla en Django: Creación y Conexión Básica

La M en el Patrón: Modelo

5

Modelos y Migraciones en Django ORM

Manejo Avanzado de Modelos y Bases de Datos

6

Migraciones en Django: Creación de Tablas en la Base de Datos

7

Creación y Gestión de Campos en Tablas de Django ORM

8

Modificación y Eliminación de Datos en Base de Datos con Python

Relaciones y Asociaciones entre Modelos

9

Relaciones de Tablas Uno a Muchos con Django

10

Relaciones de Muchos a Muchos en Modelos de Base de Datos

11

Relaciones 1 a 1 en Django: Creación y Gestión de Perfiles de Autor

12

Uso de Managers en Django para Consultas de Base de Datos

Configuración de URLs y Vistas Avanzadas

13

URLs Dinámicas en Django: Creación y Gestión Eficiente

14

Vistas en Django: Funciones vs Clases y su Implementación

La T en el Patrón: Plantillas o Templates

15

Templates y Tags en Django: Creación de Aplicaciones Web

Desarrollo de Aplicaciones en Django

16

Configuración de Proyecto Django: Entorno, Extensiones y Repositorio

17

Creación de Modelos de Producto en Django para Cafeterías

18

Instalación y uso de Pillow para campos de imagen en Django

19

Creación y Gestión de Formularios con Django

20

Creación de Plantillas con Django y Tailwind CSS

21

Administración de Modelos en Django: Configuración y Uso de Django Admin

22

Creación de Login y Registro de Usuarios en Django

23

Creación de una Aplicación de Pedidos en Django

24

Detalle de Orden y Personalización de Vistas en Django

25

Corrección de errores en MyOrderView para autenticación de usuario

26

Crear y configurar vistas para agregar productos a una orden en Django

Django Rest Framework

27

Creación de APIs con Django REST Framework

Despliegue de aplicaciones Django

28

Configuración de Bases de Datos con Django y AWS RDS

29

Uso de Django Environ para Manejar Credenciales Seguras

30

Testing de Aplicaciones Django con Unit Tests

31

Despliegue de Proyectos Django en AWS: Configuración y Mejora de Código

32

Despliegue de Aplicaciones con AWS Elastic Beanstalk y Django

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Django

Curso de Django

Luis Martínez

Luis Martínez

Uso de Django Environ para Manejar Credenciales Seguras

29/32
Recursos

Aprender a manejar información sensible es crucial para la seguridad de cualquier proyecto. Jango facilita este proceso mediante su librería Django Environment, la cual permite gestionar credenciales fuera del archivo de configuración principal.

¿Cómo instalar Django Environment?

Para comenzar, instala Django Environment desde la terminal usando el comando:

pip install django-environ

Luego, ve a tu archivo settings.py y añade la importación de la librería al principio del archivo:

import environ

¿Cómo configurar las variables de entorno?

Primero, crea una nueva instancia de la librería y define las variables en el archivo settings.py:

env = environ.Env()

Luego, mueve tus credenciales sensibles a un archivo .env en la raíz del proyecto, asegurándote de no subir este archivo al repositorio:

DATABASE_PASSWORD=my_secure_password

En settings.py, reemplaza las credenciales directas con las variables de entorno:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': env('DATABASE_NAME'),
        'USER': env('DATABASE_USER'),
        'PASSWORD': env('DATABASE_PASSWORD'),
        'HOST': env('DATABASE_HOST'),
        'PORT': env('DATABASE_PORT'),
    }
}

¿Cómo cargar las variables de entorno?

Para que Django reconozca el archivo .env, debes cargarlo en tu configuración. Agrega la siguiente línea en la parte superior de settings.py:

environ.Env.read_env(os.path.join(BASE_DIR, '.env'))

Esto permitirá que las variables definidas en .env sean accesibles desde el entorno de Django.

¿Qué hacer si la variable no se carga?

Si las variables no se cargan automáticamente, puedes exportarlas manualmente en tu entorno antes de ejecutar el servidor de Django:

export DATABASE_PASSWORD=my_secure_password

¿Cómo simplificar la configuración de la base de datos?

Jango Environment ofrece métodos útiles como db_url que simplifican aún más la configuración:

DATABASES = {
    'default': env.db(),
}

Define todas las credenciales en una única variable en el archivo .env:

DATABASE_URL=postgres://user:password@host:port/dbname

Este método reduce el número de configuraciones manuales, facilitando la administración de variables.

¿Qué ventajas ofrece Django Environment?

Usar Django Environment para gestionar credenciales ofrece múltiples beneficios:

  • Seguridad mejorada: Mantén credenciales fuera del código fuente.
  • Facilidad de uso: Simplifica la configuración de la base de datos.
  • Colaboración segura: Permite compartir código sin exponer información sensible.

Aportes 6

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para los que usan windows (PowerShell) para establecer la variable de entorno, pueden usar el siguiente comando: `$env:DJANGO_DB_PASSWORD="db-password"`
Otra opción es usar `python-dotenv:` ```js import os from pathlib import Path import dj_database_url from dotenv import load_dotenv # Cargar variables de entorno desde el archivo .env load_dotenv() # Obtener la cadena de conexión desde la variable de entorno DATABASE_URL = os.getenv('DATABASE_URL') DATABASES = { 'default': dj_database_url.config(default=DATABASE_URL) } ```
El error indica que Django está intentando acceder a una variable de entorno llamada `DJANGO\_DB\_PASSWORD` en tu archivo `settings.py`, pero esa variable no está configurada en el entorno. Django, a menudo, utiliza la biblioteca `django-environ` para cargar variables de entorno que se almacenan en un archivo `.env`. Este archivo puede contener configuraciones sensibles como las credenciales de la base de datos. Aquí te muestro cómo puedes solucionar este problema: \### 1. \*\*Verificar si tienes un archivo `.env`\*\* Asegúrate de tener un archivo `.env` en el directorio raíz de tu proyecto, donde defines variables como `DJANGO\_DB\_PASSWORD`. Un archivo `.env` típico puede lucir algo así: ```bash DJANGO\_DB\_NAME=nombre\_base\_datos DJANGO\_DB\_USER=tu\_usuario DJANGO\_DB\_PASSWORD=tu\_contraseña DJANGO\_DB\_HOST=localhost DJANGO\_DB\_PORT=5432 ``` \### 2. \*\*Crear o modificar el archivo `.env`\*\* Si no tienes un archivo `.env`, crea uno en el mismo directorio donde está el archivo `manage.py`. Luego, añade las credenciales de la base de datos, por ejemplo: ```bash DJANGO\_DB\_NAME=coffee\_shop\_db DJANGO\_DB\_USER=postgres DJANGO\_DB\_PASSWORD=tu\_contraseña DJANGO\_DB\_HOST=localhost DJANGO\_DB\_PORT=5432 ``` \### 3. \*\*Modificar `settings.py` para cargar las variables de entorno\*\* Asegúrate de que en tu archivo `settings.py` estás cargando las variables de entorno correctamente. Deberías tener algo como esto: ```python import environ env = environ.Env() environ.Env.read\_env() # Lee el archivo .env DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': env('DJANGO\_DB\_NAME'), 'USER': env('DJANGO\_DB\_USER'), 'PASSWORD': env('DJANGO\_DB\_PASSWORD'), 'HOST': env('DJANGO\_DB\_HOST'), 'PORT': env('DJANGO\_DB\_PORT'), } } ``` \### 4. \*\*Verifica que la variable de entorno esté configurada\*\* Si no puedes o no quieres usar un archivo `.env`, también puedes configurar las variables de entorno directamente en la terminal o en tu entorno de desarrollo. Por ejemplo, en PowerShell, puedes establecer la variable de esta manera: ```bash $env:DJANGO\_DB\_PASSWORD="tu\_contraseña" ``` O en bash (Linux o macOS): ```bash export DJANGO\_DB\_PASSWORD="tu\_contraseña" ``` Asegúrate de reiniciar el entorno o terminal después de establecer las variables. \### 5. \*\*Reintentar\*\* Después de haber configurado la variable de entorno o el archivo `.env`, vuelve a intentar ejecutar tu aplicación: ```bash python manage.py runserver ``` Si sigues estos pasos, el error debería solucionarse y tu proyecto Django debería conectarse correctamente a la base de datos.
Buenísima práctica :D
Solución para Windows de: **django.core.exceptions.ImproperlyConfigured: Set the DJANGO\_DB\_URL environment variable** Crear una nueva **variable de entorno:** * Introduce `DJANGO_DB_URL` como el nombre de la variable y el valor será **postgres://USER:PASSWORD@HOST:PORT/NAME** (utilizar sus propios datos.) * Haz clic en "Aceptar" para cerrar las ventanas y guardar los cambios. Por último, reiniciar la laptop. Por otro lado, en windows en vez de usar **export** usar **set.**
Cuando el profe agrega una nueva variable de entorno en el archivo .env observen como la en la parte superior derecha (donde dice zsh) aparece un signo de alerta. Eso siempre pasará cuando modifiquemos ese archivo. Esa alerta sugiere que debemos hacer un reload window, para que los cambios queden guardados. Como lo hizo el profe fue un poco más forzado ya que directamente exportó la variable, vean como el warning no se quita. Mientras que si escriben CTRL + SHIFT + P y escriben en el cuadro de diálogo ">Developer: Reload Window" todo el .env queda cargado y el warning desaparece.