Django
Descripción general
Django es un framework web de Python de alto nivel que fomenta el desarrollo rápido y un diseño limpio y pragmático. Incluye un ORM, un panel de administración, sistema de autenticación y motor de plantillas integrados.
Inicio rápido
Crear repositorio desde plantilla
En tu panel, ve a la pestaña Tools & Deployment. Haz clic en el botón "New Repository", selecciona la plantilla de Django del menú desplegable, introduce un nombre de repositorio y un subdominio, y luego haz clic en "Create Repository".
Clona tu repositorio
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Instala las dependencias
pip install -r requirements.txt
Configura la base de datos y ejecuta migraciones
Actualiza la configuración de la base de datos en settings.py (consulta Configuración de la base de datos abajo) y luego ejecuta:
python manage.py migrate
python manage.py runserver
El servidor se ejecuta en http://localhost:8000 por defecto.
Sube tus cambios
git add .
git commit -m "Initial setup"
git push origin main
Desarrollo local con Docker
Si no tienes Python instalado localmente, puedes usar Docker para ejecutar tu aplicación Django.
Ejecutar comandos con Docker
# Install dependencies
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Run development server
docker run --rm -v $(pwd):/app -w /app -p 8000:8000 python:3.12 sh -c "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:8000"
Configuración de la base de datos
La plataforma NStrim te proporciona una base de datos MySQL/MariaDB. Actualiza la configuración DATABASES en tu archivo settings.py.
Actualizar settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '<username>',
'USER': '<username>',
'PASSWORD': '<password>',
'HOST': 'db.<session-domain>',
'PORT': '3306',
}
}
student01). Consulta la sección de credenciales de tu panel para los valores exactos.Estructura del proyecto
├── project/
│ ├── settings.py # Configuración del proyecto
│ ├── urls.py # Configuración raíz de URLs
│ └── wsgi.py # Punto de entrada WSGI
├── app/
│ ├── models.py # Modelos de la base de datos
│ ├── views.py # Funciones / clases de vistas
│ ├── urls.py # Patrones de URL de la app
│ ├── serializers.py # Serializadores de DRF
│ ├── admin.py # Configuración del panel admin
│ └── templates/ # Plantillas HTML
├── static/ # CSS, JS, imágenes
├── manage.py # CLI de gestión de Django
├── requirements.txt # Dependencias Python
└── Dockerfile # Configuración Docker
Tareas comunes
Crear un modelo
from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField(unique=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
Crear una vista
from django.http import JsonResponse
from .models import User
def user_list(request):
users = list(User.objects.values('id', 'name', 'email'))
return JsonResponse(users, safe=False)
Configuración de URLs
from django.urls import path
from . import views
urlpatterns = [
path('users/', views.user_list, name='user-list'),
]
Comandos útiles
python manage.py runserver
Iniciar el servidor de desarrollo
python manage.py migrate
Ejecutar migraciones de la base de datos
python manage.py makemigrations
Crear migraciones nuevas a partir de cambios en modelos
python manage.py createsuperuser
Crear un usuario admin para el panel /admin
python manage.py shell
Shell interactivo de Python con Django
Resolución de problemas
OperationalError: (2002) Can't connect to MySQL server
Causa: El host de la base de datos es incorrecto o no es accesible.
Solución: Comprueba que HOST en la configuración DATABASES coincide con el host de la base de datos de tu panel.
OperationalError: (1045) Access denied for user
Causa: Nombre de usuario o contraseña incorrectos.
Solución: Comprueba dos veces que USER y PASSWORD en tu settings.py coinciden exactamente con las credenciales de tu panel.
No module named 'MySQLdb'
Solución: Instala el cliente MySQL: pip install mysqlclient. En macOS también puedes necesitar: brew install mysql-client.
DisallowedHost: Invalid HTTP_HOST header
Solución: Añade tu dominio de despliegue a ALLOWED_HOSTS en settings.py: ALLOWED_HOSTS = ['*']