Un proyecto Django típico tiene una estructura de directorios específica que facilita la organización y escalabilidad de la aplicación. Aquí te presento la estructura básica con explicaciones detalladas:
mi_proyecto_django/
│
├── mi_proyecto/ # Directorio raíz del proyecto
│ ├── __init__.py # Archivo que marca el directorio como un paquete Python
│ ├── asgi.py # Punto de entrada para servidores ASGI (para async)
│ ├── settings.py # Configuraciones centrales del proyecto
│ ├── urls.py # Configuración de URLs principal
│ └── wsgi.py # Punto de entrada para servidores WSGI
│
├── apps/ # Directorio para aplicaciones personalizadas
│ ├── usuarios/ # Ejemplo de una aplicación
│ │ ├── __init__.py
│ │ ├── admin.py # Configuración del admin de Django
│ │ ├── apps.py # Configuración de la aplicación
│ │ ├── models.py # Modelos de datos
│ │ ├── tests.py # Pruebas unitarias
│ │ ├── views.py # Vistas de la aplicación
│ │ └── urls.py # URLs específicas de la aplicación
│ └── blog/ # Otra aplicación de ejemplo
│
├── templates/ # Directorio central de templates
│ ├── base.html # Template base
│ ├── usuarios/ # Templates específicas de aplicaciones
│ └── blog/
│
├── static/ # Archivos estáticos globales
│ ├── css/
│ ├── js/
│ └── images/
│
├── media/ # Archivos subidos por usuarios
│
├── requirements.txt # Dependencias del proyecto
├── manage.py # Utilidad de línea de comandos de Django
└── README.md # Documentación del proyecto __init__.pysettings.pyEjemplo de configuración:
import os
from pathlib import Path
from dotenv import load_dotenv
# Cargar variables de entorno
load_dotenv()
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = os.getenv('DJANGO_SECRET_KEY')
DEBUG = os.getenv('DEBUG', 'False') == 'True'
ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS', '').split(',')
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Apps de terceros
'rest_framework',
# Tus apps
'apps.usuarios',
'apps.blog',
] urls.pyfrom django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('usuarios/', include('apps.usuarios.urls')),
path('blog/', include('apps.blog.urls')),
] Si tienes dudas sobre cómo crear un entorno virtual, te recomiendo visitar esta completa Guía sobre Entornos Virtuales en Python, donde encontrarás todo lo que necesitas saber, desde la creación hasta la gestión de entornos virtuales.
# Usando venv (recomendado)
python -m venv venv
source venv/bin/activate # En Linux/Mac
venvScriptsactivate # En Windows pip install django
pip freeze > requirements.txt django-admin startproject mi_proyecto
cd mi_proyecto
python manage.py startapp usuarios python manage.py makemigrations
python manage.py migrate python manage.py runserver
# O para un puerto específico
python manage.py runserver 8080