Grooveshop Django API
Descripción general
Este proyecto ofrece una API headless robusta que utiliza Django y Django REST Framework, con soporte para entornos sincrónicos y asincrónicos facilitados por Uvicorn (ASGI) y Gunicorn (WSGI) respectivamente. Aprovecha Django Allauth para la autenticación, utiliza Celery con Redis para la gestión de tareas y emplea Postgres para el almacenamiento de datos. Las características incluyen almacenamiento en caché, soporte en varios idiomas y cobertura de pruebas integral. La API también incluye un panel de administración de Django integrado para operaciones administrativas eficientes.
Estructura del proyecto
Las aplicaciones de Django dentro de este proyecto incluyen:
- Core : funcionalidades principales y utilidades compartidas.
- Usuario : Gestión y autenticación de usuarios.
- Producto : Gestión del catálogo de productos.
- Pedido : Tramitación y gestión de pedidos.
- Búsqueda : capacidades de búsqueda avanzada.
- Control deslizante : controles deslizantes de interfaz de usuario dinámica para promociones y aspectos destacados.
- Blog : Gestión de contenidos para publicaciones de blog.
- SEO : Herramientas y configuraciones SEO.
- Consejo : Secciones de consejos y sugerencias para el usuario.
- IVA : Cálculo y gestión del IVA.
- País : Configuraciones específicas del país.
- Región : datos y configuraciones regionales.
- Pay Way : Configuraciones del método de pago.
- Sesión : Gestión de sesiones de usuario.
- Carrito : Funcionalidades del carrito de compras.
- Notificación : Mecanismos de notificación al usuario.
- Autenticación : Capas de autenticación adicionales.
- Contacto : Herramientas de gestión y comunicación de contactos.
Características
- Autenticación y gestión de usuarios : gestión optimizada de sesiones y cuentas de usuario.
- Compatibilidad con varios idiomas : admite varios idiomas, lo que mejora la usabilidad global.
- Búsqueda y filtrado avanzados : aprovecha la búsqueda de texto completo de Postgres para una recuperación de datos eficiente.
- Programación de tareas : utiliza Celery para la gestión de tareas en segundo plano.
- Optimización del rendimiento : implementa estrategias de almacenamiento en caché para mejorar la capacidad de respuesta de la API.
- Pruebas : Incluye pruebas integrales unitarias y de integración.
- Panel de administración : panel de administración integrado de Django para una administración sencilla.
- Documentación de API : API bien documentada que utiliza Swagger y Redoc.
- Contenedorización : integración de Docker para una configuración e implementación simplificadas.
Tecnologías
- Marcos : Django, Marco REST de Django
- Autenticación : Django Allauth
- Base de datos : PostgreSQL
- Gestión de tareas : apio
- Agente de mensajes : Redis
- Configuración del servidor : Uvicorn (ASGI), Gunicorn (WSGI)
- Contenedorización : Docker
Configuración
Requisitos previos
- Python 3.13 o superior
- Django 5.0 o superior
- PostgreSQL
- Redis
Licencia
Este proyecto es de código abierto bajo la licencia MIT. Consulte el archivo de LICENCIA para obtener más detalles.
Comandos Docker para proyectos Django
Usando Docker Compose
Operaciones de base de datos
- Ejecute migraciones de base de datos :
docker compose run backend sh -c "python manage.py makemigrations --noinput"
- Aplicar migraciones :
docker compose run backend sh -c "python manage.py migrate"
Gestión de usuarios
- Crear superusuario :
docker compose run backend sh -c "python manage.py createsuperuser"
Archivos estáticos
- Recopilar archivos estáticos :
docker compose run backend sh -c "python manage.py collectstatic --noinput"
Pruebas y cobertura
- Ejecutar pruebas :
docker compose run backend sh -c "python manage.py test tests/"
- Ejecute pruebas con cobertura (excluyendo archivos y carpetas específicos):
docker compose run backend sh -c "coverage run --omit=*/migrations/*,*/management/*,*/manage.py,*/setup.py,*/asgi.py,*/wsgi.py --source='.' manage.py test tests/ && coverage report && coverage html"
- Generar informes HTML de cobertura :
docker compose run backend sh -c "coverage html"
Siembra de datos
- Base de datos de semillas con datos falsos :
docker compose run backend sh -c "python manage.py seed_all"
Archivos de composición de Docker personalizados
- Ejecutar con un archivo de redacción específico :
docker compose -f <docker-compose-file.yml> up -d --build
Usando Docker Exec
Comandos generales
- Ejecutar comando en contenedor :
docker exec -it <container_id> <command>
- Ejecute un comando de Shell específico :
docker exec -it <container_id> sh -c "<command>"
Localización
- Generar mensajes de configuración regional :
docker exec -it <container_id> sh -c "python manage.py makemessages -l <locale>"
docker exec -it <container_id> sh -c "python manage.py makemessages --all --ignore=env"
- Compilar mensajes de configuración regional :
docker exec -it <container_id> sh -c "python manage.py compilemessages --ignore=env"
Configuración adicional para herramientas de desarrollo
Apio
Inicio de servicios de apio
- Ejecute un programador de ritmos de Apio local usando el programador de base de datos de Django:
celery -A core beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
- Ejecute un trabajador de apio :
celery -A core worker -E -l info --pool=solo
- Monitorear apio con flor :
celery -A core flower --broker=amqp://guest:guest@localhost:5672// --broker_api=http://guest:guest@localhost:15672/api// --port=5555
Uvicornio
Ejecutando la aplicación ASGI
- Inicie Uvicorn para aplicaciones ASGI :
uvicorn asgi:application --port 8000 --workers 4 --log-level debug --reload
Configuración y utilidades de desarrollo de Python
Versión de Python 3.13.1
Gestión del entorno virtual
- Instalar Virtualenv :
pip install virtualenv
- Crear entorno virtual :
virtualenv <env_name>
- Activar entorno virtual :
- Unix/Linux:
source <env_name>/bin/activate
- Windows:
<env_name>Scriptsactivate
- Desactivar Entorno Virtual :
deactivate
- Requisitos de instalación :
pip install -r requirements.txt
- Requisitos específicos del entorno de instalación :
pip install -r requirements/<env_name>.txt
Comandos de Django
- Instalar Django :
pip install django
- Iniciar un nuevo proyecto :
django-admin startproject <project_name>
- Iniciar una nueva aplicación :
python manage.py startapp <app_name>
- Migraciones y Gestión de Bases de Datos :
- Realizar migraciones:
python manage.py makemigrations
- Aplicar migraciones:
python manage.py migrate
- Vaciar la base de datos:
python manage.py sqlflush
- Llene la base de datos con datos semilla (ejemplo de fábrica única):
python manage.py factory_seed --model="BlogPost" --count="100"
- Llene la base de datos con datos semilla (Ejemplo de todas las fábricas):
python manage.py seed_all --model-counts="Country=10,Product=100"
- Administrar usuarios :
- Crear superusuario:
python manage.py createsuperuser
- Administrar archivos estáticos :
python manage.py collectstatic
- Pruebas y depuración :
- Ejecutar pruebas:
python manage.py test
- Acceda al shell de Django:
python manage.py shell
- Shell mejorado:
python manage.py shell_plus
- Shell de base de datos:
python manage.py dbshell
- Ejecutar servidor de desarrollo :
python manage.py runserver
Formato de código y linting
- Navegue al directorio de origen :
cd src
- Precompromiso y formato en negro :
- Instalar ganchos de confirmación previa:
pre-commit install
- Ejecute ganchos de confirmación previa:
pre-commit run --all-files
- Código de formato con Negro:
black .
Poesía para la gestión de la dependencia
- Instalar poesía : Unix/Linux:
curl -sSL https://install.python-poetry.org | python3 -
Windows: (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
- Gestionar proyectos y dependencias :
- Crea un nuevo proyecto:
poetry new <project_name>
- Instalar dependencias:
poetry install
- Agregar o eliminar una dependencia:
poetry add <dependency_name>
y poetry remove <dependency_name>
- Actualizar una dependencia específica o un archivo de bloqueo:
poetry update <dependency_name>
y poetry lock
- Ejecutar un script:
poetry run <script_name>
- Ingrese al shell del entorno virtual:
poetry shell
Cómo actualizar automáticamente los requisitos de pip.txt
- Usando pip-upgrader :
- Ejecute pip-upgrader :
pip-upgrade
Fresa GraphQL
- Instalar fresa :
pip install strawberry-graphql
- Ejecute el servidor Strawberry :
strawberry server
- Ejecutar con el esquema del proyecto :
strawberry server core.graphql.schema:schema
Marco REST de Django: espectacular
- Generar esquema API :
python manage.py spectacular --color --file schema.yml
Uso del comando Git
Gestión de etiquetas
Eliminar etiquetas