Grooveshop Django-API
Überblick
Dieses Projekt liefert eine robuste Headless-API mit Django und dem Django REST Framework mit Unterstützung für synchrone und asynchrone Umgebungen, die durch Uvicorn (ASGI) bzw. Gunicorn (WSGI) ermöglicht werden. Es nutzt Django Allauth zur Authentifizierung, Celery mit Redis zur Aufgabenverwaltung und Postgres zur Datenspeicherung. Zu den Funktionen gehören Caching, Unterstützung mehrerer Sprachen und umfassende Testabdeckung. Die API umfasst außerdem ein integriertes Django-Admin-Panel für effiziente Verwaltungsvorgänge.
Projektstruktur
Zu den Django-Anwendungen in diesem Projekt gehören:
- Kern : Kernfunktionen und gemeinsame Dienstprogramme.
- Benutzer : Benutzerverwaltung und Authentifizierung.
- Produkt : Produktkatalogverwaltung.
- Auftrag : Auftragsabwicklung und -verwaltung.
- Suche : Erweiterte Suchfunktionen.
- Slider : Dynamische UI-Slider für Werbeaktionen und Highlights.
- Blog : Content-Management für Blogbeiträge.
- SEO : SEO-Tools und -Konfigurationen.
- Tipp : Abschnitte mit Benutzertipps und Ratschlägen.
- Mehrwertsteuer : Berechnung und Verwaltung der Mehrwertsteuer.
- Land : Länderspezifische Konfigurationen.
- Region : Regionale Daten und Einstellungen.
- Pay Way : Konfigurationen der Zahlungsmethoden.
- Sitzung : Benutzersitzungsverwaltung.
- Warenkorb : Warenkorbfunktionen.
- Benachrichtigung : Benutzerbenachrichtigungsmechanismen.
- Authentifizierung : Zusätzliche Authentifizierungsebenen.
- Kontakt : Kontaktmanagement- und Kommunikationstools.
Merkmale
- Authentifizierung und Benutzerverwaltung : Optimierte Benutzerkonto- und Sitzungsverwaltung.
- Mehrsprachige Unterstützung : Unterstützt verschiedene Sprachen und verbessert die globale Benutzerfreundlichkeit.
- Erweiterte Suche und Filterung : Nutzt die Postgres-Volltextsuche für einen effizienten Datenabruf.
- Aufgabenplanung : Verwendet Celery für die Aufgabenverwaltung im Hintergrund.
- Leistungsoptimierung : Implementiert Caching-Strategien, um die API-Reaktionsfähigkeit zu verbessern.
- Testen : Beinhaltet umfassende Unit- und Integrationstests.
- Admin-Panel : Djangos integriertes Admin-Panel für eine einfache Verwaltung.
- API-Dokumentation : Gut dokumentierte API mit Swagger und Redoc.
- Containerisierung : Docker-Integration für vereinfachte Einrichtung und Bereitstellung.
Technologien
- Frameworks : Django, Django REST Framework
- Authentifizierung : Django Allauth
- Datenbank : PostgreSQL
- Aufgabenverwaltung : Sellerie
- Nachrichtenbroker : Redis
- Server-Setup : Uvicorn (ASGI), Gunicorn (WSGI)
- Containerisierung : Docker
Aufstellen
Voraussetzungen
- Python 3.13 oder höher
- Django 5.0 oder höher
- PostgreSQL
- Redis
Lizenz
Dieses Projekt ist Open-Source unter der MIT-Lizenz. Weitere Einzelheiten finden Sie in der LICENSE-Datei.
Docker-Befehle für Django-Projekte
Verwenden von Docker Compose
Datenbankoperationen
- Führen Sie DB-Migrationen aus :
docker compose run backend sh -c "python manage.py makemigrations --noinput"
- Migrationen anwenden :
docker compose run backend sh -c "python manage.py migrate"
Benutzerverwaltung
- Superuser erstellen :
docker compose run backend sh -c "python manage.py createsuperuser"
Statische Dateien
- Statische Dateien sammeln :
docker compose run backend sh -c "python manage.py collectstatic --noinput"
Tests und Abdeckung
- Tests ausführen :
docker compose run backend sh -c "python manage.py test tests/"
- Führen Sie Tests mit Coverage aus (ausgenommen bestimmte Dateien und Ordner):
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"
- Generieren Sie Coverage-HTML-Berichte :
docker compose run backend sh -c "coverage html"
Daten-Seeding
- Seed-Datenbank mit gefälschten Daten :
docker compose run backend sh -c "python manage.py seed_all"
Benutzerdefinierte Docker Compose-Dateien
- Mit einer bestimmten Compose-Datei ausführen :
docker compose -f <docker-compose-file.yml> up -d --build
Verwenden von Docker Exec
Allgemeine Befehle
- Befehl im Container ausführen :
docker exec -it <container_id> <command>
- Führen Sie einen bestimmten Shell-Befehl aus :
docker exec -it <container_id> sh -c "<command>"
Lokalisierung
- Lokale Nachrichten generieren :
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"
- Lokale Nachrichten kompilieren :
docker exec -it <container_id> sh -c "python manage.py compilemessages --ignore=env"
Zusätzliche Konfiguration für Entwicklungstools
Sellerie
Starten der Selleriedienste
- Führen Sie einen lokalen Celery-Beat-Scheduler mit dem Django-Datenbank-Scheduler aus:
celery -A core beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
- Führen Sie einen Celery-Worker aus :
celery -A core worker -E -l info --pool=solo
- Überwachen Sie Sellerie mit Blume :
celery -A core flower --broker=amqp://guest:guest@localhost:5672// --broker_api=http://guest:guest@localhost:15672/api// --port=5555
Uvicorn
Ausführen der ASGI-Anwendung
- Starten Sie Uvicorn für ASGI-Anwendungen :
uvicorn asgi:application --port 8000 --workers 4 --log-level debug --reload
Python-Entwicklungs-Setup und Dienstprogramme
Python-Version 3.13.1
Virtuelles Umgebungsmanagement
- Installieren Sie Virtualenv :
pip install virtualenv
- Erstellen Sie eine virtuelle Umgebung :
virtualenv <env_name>
- Virtuelle Umgebung aktivieren :
- Unix/Linux:
source <env_name>/bin/activate
- Windows:
<env_name>Scriptsactivate
- Virtuelle Umgebung deaktivieren :
deactivate
- Installationsanforderungen :
pip install -r requirements.txt
- Umgebungsspezifische Anforderungen installieren :
pip install -r requirements/<env_name>.txt
Django-Befehle
- Django installieren :
pip install django
- Starten Sie ein neues Projekt :
django-admin startproject <project_name>
- Starten Sie eine neue App :
python manage.py startapp <app_name>
- Datenbankmigrationen und -verwaltung :
- Migrationen durchführen:
python manage.py makemigrations
- Migrationen anwenden:
python manage.py migrate
- Leeren Sie die Datenbank:
python manage.py sqlflush
- Datenbank mit Seed-Daten füllen (Beispiel für eine einzelne Fabrik):
python manage.py factory_seed --model="BlogPost" --count="100"
- Datenbank mit Seed-Daten füllen (Beispiel „Alle Fabriken“):
python manage.py seed_all --model-counts="Country=10,Product=100"
- Benutzer verwalten :
- Superuser erstellen:
python manage.py createsuperuser
- Statische Dateien verwalten :
python manage.py collectstatic
- Testen und Debuggen :
- Führen Sie Tests aus:
python manage.py test
- Greifen Sie auf die Django-Shell zu:
python manage.py shell
- Erweiterte Shell:
python manage.py shell_plus
- Datenbank-Shell:
python manage.py dbshell
- Führen Sie den Entwicklungsserver aus :
python manage.py runserver
Codeformatierung und Linting
- Navigieren Sie zum Quellverzeichnis :
cd src
- Pre-Commit und Black-Formatierung :
- Pre-Commit-Hooks installieren:
pre-commit install
- Pre-Commit-Hooks ausführen:
pre-commit run --all-files
- Code mit Schwarz formatieren:
black .
Poesie für das Abhängigkeitsmanagement
- Installieren Sie Poetry : Unix/Linux:
curl -sSL https://install.python-poetry.org | python3 -
Windows: (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
- Projekte und Abhängigkeiten verwalten :
- Erstellen Sie ein neues Projekt:
poetry new <project_name>
- Abhängigkeiten installieren:
poetry install
- Fügen Sie eine Abhängigkeit hinzu oder entfernen Sie sie:
poetry add <dependency_name>
und poetry remove <dependency_name>
- Aktualisieren Sie eine bestimmte Abhängigkeits- oder Sperrdatei:
poetry update <dependency_name>
und poetry lock
- Führen Sie ein Skript aus:
poetry run <script_name>
- Geben Sie die Shell der virtuellen Umgebung ein:
poetry shell
So führen Sie ein automatisches Pip-Upgrade von „requirements.txt“ durch
- Pip-Upgrader verwenden :
- Führen Sie pip-upgrader aus :
pip-upgrade
Erdbeer-GraphQL
- Erdbeere installieren :
pip install strawberry-graphql
- Führen Sie Strawberry Server aus :
strawberry server
- Führen Sie es mit dem Projektschema aus :
strawberry server core.graphql.schema:schema
Django REST Framework – Spektakulär
- API-Schema generieren :
python manage.py spectacular --color --file schema.yml
Verwendung von Git-Befehlen
Tag-Management
Tags löschen
Remote-Tags löschen :
- Alle Remote-Tags löschen:
git tag -l | xargs -n 1 git push --delete origin
Lokale Tags löschen :
- Alle lokalen Tags löschen:
git tag -l | xargs git tag -d