Django
Überblick
Django ist ein High-Level-Python-Webframework, das schnelle Entwicklung und sauberes, pragmatisches Design fördert. Es enthält ein ORM, ein Admin-Panel, ein Authentifizierungssystem und eine integrierte Template-Engine.
Schnellstart
Repository aus Vorlage erstellen
Gehen Sie in Ihrem Dashboard zum Tab Tools & Deployment. Klicken Sie auf "New Repository", wählen Sie die Django-Vorlage aus dem Dropdown, geben Sie einen Repository-Namen und eine Subdomain ein und klicken Sie auf "Create Repository".
Ihr Repository klonen
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Abhängigkeiten installieren
pip install -r requirements.txt
Datenbank konfigurieren & Migrationen ausführen
Aktualisieren Sie die Datenbankeinstellungen in settings.py (siehe Datenbank-Konfiguration unten), dann führen Sie aus:
python manage.py migrate
python manage.py runserver
Der Server läuft standardmäßig auf http://localhost:8000.
Ihre Änderungen hochladen
git add .
git commit -m "Initial setup"
git push origin main
Lokale Entwicklung mit Docker
Wenn Sie Python nicht lokal installiert haben, können Sie Docker verwenden, um Ihre Django-Anwendung auszuführen.
Befehle mit Docker ausführen
# Abhängigkeiten installieren
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Entwicklungsserver starten
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"
Datenbank-Konfiguration
Die NStrim-Plattform stellt Ihnen eine MySQL/MariaDB-Datenbank zur Verfügung. Aktualisieren Sie die DATABASES-Einstellung in Ihrer settings.py-Datei.
settings.py aktualisieren
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '<username>',
'USER': '<username>',
'PASSWORD': '<password>',
'HOST': 'db.<session-domain>',
'PORT': '3306',
}
}
student01). Überprüfen Sie den Anmeldedaten-Bereich Ihres Dashboards für die genauen Werte.Projektstruktur
├── project/
│ ├── settings.py # Projektkonfiguration
│ ├── urls.py # Stamm-URL-Konfiguration
│ └── wsgi.py # WSGI-Einstiegspunkt
├── app/
│ ├── models.py # Datenbankmodelle
│ ├── views.py # View-Funktionen / -Klassen
│ ├── urls.py # App-URL-Muster
│ ├── serializers.py # DRF-Serialisierer
│ ├── admin.py # Admin-Panel-Konfiguration
│ └── templates/ # HTML-Vorlagen
├── static/ # CSS, JS, Bilder
├── manage.py # Django-Management-CLI
├── requirements.txt # Python-Abhängigkeiten
└── Dockerfile # Docker-Konfiguration
Häufige Aufgaben
Model erstellen
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
View erstellen
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)
URL-Konfiguration
from django.urls import path
from . import views
urlpatterns = [
path('users/', views.user_list, name='user-list'),
]
Nützliche Befehle
python manage.py runserver
Entwicklungsserver starten
python manage.py migrate
Datenbankmigrationen ausführen
python manage.py makemigrations
Neue Migrationen aus Model-Änderungen erstellen
python manage.py createsuperuser
Admin-Benutzer für /admin-Panel erstellen
python manage.py shell
Interaktive Python-Shell mit Django
Fehlerbehebung
OperationalError: (2002) Can't connect to MySQL server
Ursache: Der Datenbank-Host ist falsch oder nicht erreichbar.
Lösung: Überprüfen Sie, ob HOST in der DATABASES-Einstellung mit dem Datenbank-Host aus Ihrem Dashboard übereinstimmt.
OperationalError: (1045) Access denied for user
Ursache: Falscher Benutzername oder Passwort.
Lösung: Überprüfen Sie, ob USER und PASSWORD in Ihrer settings.py genau mit Ihren Dashboard-Anmeldedaten übereinstimmen.
No module named 'MySQLdb'
Lösung: Installieren Sie den MySQL-Client: pip install mysqlclient. Auf macOS benötigen Sie möglicherweise auch: brew install mysql-client.
DisallowedHost: Invalid HTTP_HOST header
Lösung: Fügen Sie Ihre Bereitstellungs-Domain zu ALLOWED_HOSTS in settings.py hinzu: ALLOWED_HOSTS = ['*']