API Grooveshop Django
Aperçu
Ce projet fournit une API sans tête robuste utilisant Django et Django REST Framework, avec prise en charge des environnements synchrones et asynchrones facilitée respectivement par Uvicorn (ASGI) et Gunicorn (WSGI). Il exploite Django Allauth pour l'authentification, utilise Celery avec Redis pour la gestion des tâches et utilise Postgres pour le stockage des données. Les fonctionnalités incluent la mise en cache, la prise en charge multilingue et une couverture de test complète. L'API comprend également un panneau d'administration Django intégré pour des opérations administratives efficaces.
Structure du projet
Les applications Django de ce projet incluent :
- Core : Fonctionnalités de base et utilitaires partagés.
- Utilisateur : Gestion et authentification des utilisateurs.
- Produit : Gestion du catalogue produits.
- Commande : Traitement et gestion des commandes.
- Recherche : capacités de recherche avancées.
- Slider : curseurs d'interface utilisateur dynamiques pour les promotions et les faits saillants.
- Blog : Gestion de contenu pour les articles de blog.
- SEO : outils et configurations SEO.
- Astuce : Rubriques astuces et conseils d'utilisation.
- TVA : calcul et gestion de la TVA.
- Pays : configurations spécifiques au pays.
- Région : données et paramètres régionaux.
- Pay Way : configurations des méthodes de paiement.
- Session : Gestion des sessions utilisateurs.
- Panier : Fonctionnalités du panier.
- Notification : mécanismes de notification des utilisateurs.
- Authentification : Couches d'authentification supplémentaires.
- Contact : Gestion des contacts et outils de communication.
Caractéristiques
- Authentification et gestion des utilisateurs : gestion rationalisée des comptes utilisateur et des sessions.
- Prise en charge multilingue : s'adapte à diverses langues, améliorant ainsi la convivialité globale.
- Recherche et filtrage avancés : exploite la recherche en texte intégral Postgres pour une récupération efficace des données.
- Planification des tâches : utilise le céleri pour la gestion des tâches en arrière-plan.
- Optimisation des performances : met en œuvre des stratégies de mise en cache pour améliorer la réactivité de l'API.
- Tests : comprend des tests unitaires et d'intégration complets.
- Panneau d'administration : le panneau d'administration intégré de Django pour une gestion simple.
- Documentation API : API bien documentée utilisant Swagger et Redoc.
- Conteneurisation : intégration Docker pour une configuration et un déploiement simplifiés.
Technologies
- Frameworks : Django, Django REST Framework
- Authentification : Django Allauth
- Base de données : PostgreSQL
- Gestion des tâches : Céleri
- Courtier de messages : Redis
- Configuration du serveur : Uvicorn (ASGI), Gunicorn (WSGI)
- Conteneurisation : Docker
Installation
Conditions préalables
- Python 3.13 ou supérieur
- Django 5.0 ou supérieur
- PostgreSQL
- Rédis
Licence
Ce projet est open source sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Commandes Docker pour les projets Django
Utiliser Docker Composer
Opérations de base de données
- Exécuter les migrations de bases de données :
docker compose run backend sh -c "python manage.py makemigrations --noinput"
- Appliquer les migrations :
docker compose run backend sh -c "python manage.py migrate"
Gestion des utilisateurs
- Créer un superutilisateur :
docker compose run backend sh -c "python manage.py createsuperuser"
Fichiers statiques
- Collecter les fichiers statiques :
docker compose run backend sh -c "python manage.py collectstatic --noinput"
Tests et couverture
- Exécuter des tests :
docker compose run backend sh -c "python manage.py test tests/"
- Exécuter des tests avec couverture (à l'exclusion des fichiers et dossiers spécifiques) :
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"
- Générer des rapports HTML de couverture :
docker compose run backend sh -c "coverage html"
Amorçage des données
- Base de données de départ avec de fausses données :
docker compose run backend sh -c "python manage.py seed_all"
Fichiers de composition Docker personnalisés
- Exécuter avec un fichier de composition spécifique :
docker compose -f <docker-compose-file.yml> up -d --build
Utiliser Docker Exec
Commandes générales
- Exécuter la commande dans le conteneur :
docker exec -it <container_id> <command>
- Exécuter une commande Shell spécifique :
docker exec -it <container_id> sh -c "<command>"
Localisation
- Générer des messages locaux :
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"
- Compiler les messages locaux :
docker exec -it <container_id> sh -c "python manage.py compilemessages --ignore=env"
Configuration supplémentaire pour les outils de développement
Céleri
Démarrage des services de céleri
- Exécutez un planificateur de battements Celery local à l'aide du planificateur de base de données Django :
celery -A core beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
- Exécuter un travailleur Celery :
celery -A core worker -E -l info --pool=solo
- Moniteur Céleri avec Fleur :
celery -A core flower --broker=amqp://guest:guest@localhost:5672// --broker_api=http://guest:guest@localhost:15672/api// --port=5555
Uvicorne
Exécution de l'application ASGI
- Démarrez Uvicorn pour les applications ASGI :
uvicorn asgi:application --port 8000 --workers 4 --log-level debug --reload
Configuration et utilitaires de développement Python
PythonVersion 3.13.1
Gestion de l'environnement virtuel
- Installer Virtualenv :
pip install virtualenv
- Créer un environnement virtuel :
virtualenv <env_name>
- Activer l'environnement virtuel :
- Unix/Linux :
source <env_name>/bin/activate
- Windows :
<env_name>Scriptsactivate
- Désactiver l'environnement virtuel :
deactivate
- Exigences d'installation :
pip install -r requirements.txt
- Installer les exigences spécifiques à l'environnement :
pip install -r requirements/<env_name>.txt
Commandes Django
- Installer Django :
pip install django
- Démarrer un nouveau projet :
django-admin startproject <project_name>
- Démarrer une nouvelle application :
python manage.py startapp <app_name>
- Migrations et gestion de bases de données :
- Effectuer des migrations :
python manage.py makemigrations
- Appliquer les migrations :
python manage.py migrate
- Vider la base de données :
python manage.py sqlflush
- Remplir la base de données avec des données de départ (exemple d'usine unique) :
python manage.py factory_seed --model="BlogPost" --count="100"
- Remplissez la base de données avec des données de départ (exemple de toutes les usines) :
python manage.py seed_all --model-counts="Country=10,Product=100"
- Gérer les utilisateurs :
- Créer un superutilisateur :
python manage.py createsuperuser
- Gérer les fichiers statiques :
python manage.py collectstatic
- Tests et débogage :
- Exécuter des tests :
python manage.py test
- Accéder au shell Django :
python manage.py shell
- Shell amélioré :
python manage.py shell_plus
- Shell de base de données :
python manage.py dbshell
- Exécuter le serveur de développement :
python manage.py runserver
Formatage du code et peluchage
- Accédez au répertoire source :
cd src
- Pré-commit et formatage noir :
- Installer des hooks de pré-validation :
pre-commit install
- Exécuter les hooks de pré-commit :
pre-commit run --all-files
- Formater le code avec Noir :
black .
Poésie pour la gestion des dépendances
- Installer Poetry : Unix/Linux :
curl -sSL https://install.python-poetry.org | python3 -
Windows : (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
- Gérer les projets et les dépendances :
- Créer un nouveau projet :
poetry new <project_name>
- Installer les dépendances :
poetry install
- Ajouter ou supprimer une dépendance :
poetry add <dependency_name>
et poetry remove <dependency_name>
- Mettre à jour une dépendance ou un fichier de verrouillage spécifique :
poetry update <dependency_name>
et poetry lock
- Exécuter un script :
poetry run <script_name>
- Entrez dans le shell de l'environnement virtuel :
poetry shell
Comment mettre à niveau automatiquement le fichier conditions.txt
- Utilisation de pip-upgrader :
- Exécutez pip-upgrader :
pip-upgrade
Fraise GraphQL
- Installer Strawberry :
pip install strawberry-graphql
- Exécuter Strawberry Server :
strawberry server
- Exécuter avec Project Schema :
strawberry server core.graphql.schema:schema
Django REST Framework - Spectaculaire
- Générer un schéma API :
python manage.py spectacular --color --file schema.yml
Utilisation des commandes Git
Gestion des balises
Suppression de balises