Heim >Backend-Entwicklung >Python-Tutorial >Django API-Projekt-Setup
Nun, fangen wir mit dem Codieren an! Dies ist der erste Codierungsartikel, nachdem wir die Idee von Alive Diary vorgestellt und bewiesen haben, dass Zwillinge die Seele sein können. Wir werden mit der Codierung des Backends mit Django beginnen.
Um Ordnung zu schaffen, werde ich das Projekt in mehreren Artikeln besprechen, also in diesem Artikel
Ich werde versuchen, so viele Details wie möglich abzudecken, ohne Sie zu langweilen, aber ich erwarte dennoch, dass Sie mit einigen Aspekten von Python und Django vertraut sind.
Die endgültige Version des Quellcodes finden Sie unter https://github.com/saad4software/alive-diary-backend
Schauen Sie sich bei Interesse frühere Artikel an!
Nach der Installation von Python und dem Einrichten einer virtuellen Umgebung, die zu Ihrem Betriebssystem passt. Stellen Sie sicher, dass Sie diese Bibliotheken installieren
Django==4.2.16 # it is django itself! django-cors-headers==4.4.0 # avoid cors-headers issues django-filter==24.3 # easily filter text fields djangorestframework==3.15.2 # rest framework! djangorestframework-simplejwt==5.3.1 # JWT token pillow==10.4.0 # for images python-dotenv==1.0.1 # load config from .env file google-generativeai==0.7.2 # google api ipython==8.18.1 # process gemini responses django-parler==2.3 # multiple languages support django-parler-rest==2.2 # multi-language with restframework
requirements.txt
Es muss jedoch nicht dieselbe Version sein. Abhängig von Ihrer Python-Version können Sie jede Version manuell mit
installierenpip install django
Oder erstellen Sie die Anforderungsdatei und verwenden Sie dieselbe alte
pip install -r require.txt
Sobald Django und die Bibliotheken installiert sind, können wir unser Projekt starten
django-admin startproject alive_diary cd alive_diary python manage.py startapp app_account python manage.py startapp app_admin python manage.py startapp app_main
Wir haben ein Projekt namens „alive_diary“ erstellt und darin drei Apps erstellt,
Wir werden eine minimale Abhängigkeit zwischen Django-Apps beibehalten, um sie in anderen Projekten wiederverwendbar zu machen.
Kurz gesagt, dies ist die endgültige Einstellungsdatei. Gehen wir sie schnell durch.
import os from datetime import timedelta from pathlib import Path from dotenv import load_dotenv
Wir haben timedelta aus dem datetime-Paket verwendet, um die JWT-Lebensdauer festzulegen, os und load_dotenv, um Variablen aus der .env-Datei zu laden.
load_dotenv()
Variablen aus der .env-Datei laden
BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = os.getenv("SECRET_KEY") DEBUG = True ALLOWED_HOSTS = ['*']
‘*‘ für ALLOWED_HOSTS hinzugefügt, um eine Verbindung von jeder IP aus zu ermöglichen. os.getenv ruft den Schlüsselwert aus der .env-Datei ab.
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'corsheaders', 'rest_framework', 'django_filters', 'app_account', 'app_admin', 'app_main', ]
Die Apps „corsheaders“, „rest_framework“ und „django_filters“ sowie unsere drei Apps „app_account“, „app_admin“ und „app_main“ wurden hinzugefügt.
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
Vergessen Sie nicht, die CorsMiddleware-Middleware vor der CommonMiddleware hinzuzufügen
Django==4.2.16 # it is django itself! django-cors-headers==4.4.0 # avoid cors-headers issues django-filter==24.3 # easily filter text fields djangorestframework==3.15.2 # rest framework! djangorestframework-simplejwt==5.3.1 # JWT token pillow==10.4.0 # for images python-dotenv==1.0.1 # load config from .env file google-generativeai==0.7.2 # google api ipython==8.18.1 # process gemini responses django-parler==2.3 # multiple languages support django-parler-rest==2.2 # multi-language with restframework
Cors-Header-Konfiguration zur Einstellungsdatei hinzufügen
django-admin startproject alive_diary cd alive_diary python manage.py startapp app_account python manage.py startapp app_admin python manage.py startapp app_main
Verwenden Sie die einfache JWT-Authentifizierung als Standardauthentifizierungsklasse für die Rest-Framework-Bibliothek.
import os from datetime import timedelta from pathlib import Path from dotenv import load_dotenv
Ändern Sie die Standardbenutzerklasse in eine benutzerdefinierte von app_account. Wir haben dieses Modell noch nicht erstellt.
load_dotenv()
Unterstützte Sprachen hinzugefügt und Ordner für Dateien und Statiken festgelegt
BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = os.getenv("SECRET_KEY") DEBUG = True ALLOWED_HOSTS = ['*']
E-Mail-Einstellungen für den E-Mail-Verifizierungsprozess. Wir laden sie aus der .env-Datei.
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'corsheaders', 'rest_framework', 'django_filters', 'app_account', 'app_admin', 'app_main', ]
Einfache JWT-Token-Einstellungen: Wir legen die Lebensdauer des Zugriffstokens „ACCESS_TOKEN_LIFETIME“ auf 8 Stunden und die Lebensdauer des Aktualisierungstokens „REFRESH_TOKEN_LIFETIME“ auf 5 Tage fest. Wir rotieren das Aktualisierungstoken (senden neues Aktualisierungstoken mit jeder Aktualisierungstokenanforderung) „ROTATE_REFRESH_TOKENS“ und verwenden das „Bearer“-Header-Präfix für die Authentifizierung „AUTH_HEADER_TYPES“.
Die verwendeten Variablen in der .env-Datei sollten
sein
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
Stellen Sie die Werte entsprechend Ihrem Projekt ein. Sie können den generierten Django-Geheimschlüssel als Geheimschlüssel verwenden, den Google Gemini-API-Schlüssel von AI Studio erhalten und Ihr E-Mail-Konto für Bestätigungs-E-Mails verwenden.
Die Verwendung eines Google-Kontos zum Senden von E-Mails ist möglich, wird jedoch nicht empfohlen. Die Einstellungen sollten wie folgt lauten:
ROOT_URLCONF = 'alive_diary.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'alive_diary.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True STATIC_URL = '/static/' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # CORS HEADERS CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_CREDENTIALS = True
und der Benutzer sollte „Weniger sichere Apps“ aktivieren, um auf das Gmail-Konto zuzugreifen. Wie auch immer, wir können zuerst das Ganze bauen und uns später darum kümmern. Ignorieren Sie vorerst einfach den Teil zur E-Mail-Bestätigung.
Um das Projekt ausführen und diesen Artikel fertigstellen zu können, erstellen wir ein Benutzermodell in app_account/models.py
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_simplejwt.authentication.JWTAuthentication', ], }
So einfach ist das! (Wir werden im nächsten Artikel daran arbeiten) Lasst uns Migrationen durchführen und migrieren
AUTH_USER_MODEL = 'app_account.User'
Wenn alles gut gelaufen ist, sollten Sie das Projekt jetzt ausführen können
LANGUAGES = [ ('en', 'English'), ('ar', 'Arabic') ] STATICFILES_DIRS = [os.path.join(BASE_DIR, "app_main", "site_static")] STATIC_ROOT = os.path.join(BASE_DIR, "app_main", "static") MEDIA_ROOT = os.path.join(BASE_DIR, "app_main", "media") MEDIA_URL = "/app_main/media/"
Bitte teilen Sie mir Ihr Problem mit. Wir sind jetzt bereit, mit der Arbeit an den Projekt-Apps zu beginnen!
Der nächste Artikel sollte sich mit app_account, der Benutzerverwaltungs-App, befassen. Er umfasst Benutzerverwaltung, Anmeldung, Registrierung, Passwort ändern, Passwort vergessen, Kontobestätigung und andere benutzerbezogene Aktionen, die wir in den meisten Apps benötigen.
Bleiben Sie dran ?
Das obige ist der detaillierte Inhalt vonDjango API-Projekt-Setup. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!