Nachdem Du im letzten Beitrag gesehen hast, wie ein Django Projekt strukturiert ist, geht’s heute ab mit der Datenbankkonfiguration von Django. Datenbanken sind das Herzstück jeder Webanwendung, und Django macht es uns super leicht, sie zu verwalten. Lass uns einen detaillierten Blick darauf werfen, wie wir eine Verbindung zur Datenbank herstellen, die Einstellungen anpassen und unser erstes Modell erstellen können. Eine Admin-Oberfläche bringt Django out-of-the-box mit. Also wieder ein Schritt weniger, um den wir uns kümmern müssen!
Verbindung zur Datenbank herstellen
SQLite ist eine großartige Wahl für Entwicklungsumgebungen, da es keine separate Datenbankserver-Installation erfordert und direkt in Django integriert ist. Um eine Verbindung zur SQLite-Datenbank herzustellen, benötigen wir keine zusätzlichen Konfigurationen. Django verwendet standardmäßig SQLite, wenn keine spezifische Datenbank-Engine in den settings.py
festgelegt ist.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Damit wird eine Datei mit dem Namen db.sqlite3
direkt im Projektverzeichnis erstellt. Das ist alles. Kein Server, keine Konfiguration, keine Installation. Und später siehst Du, wie einfach und schnell die Datenbank auch initialisiert wird.
Genauso einfach lässt sich aber auch eine richtige Datenbank für den Produktivbetrieb anbinden:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'meinedatenbank',
'USER': 'meinbenutzer',
'PASSWORD': 'geheim',
'HOST': 'localhost',
'PORT': '5432',
}
}
Django bietet hier Datenbank Engines an, über die die verschiedenen Datenbank-Typen angebunden werden können. Weitere Schritte sind nicht notwendig. Einmal konfiguriert, kann es Dir egal sein, welche Datenbank unter der Haube läuft. Die Arbeit damit ist für Dich immer die gleiche.
Django-Einstellungen für die Datenbankverbindung anpassen
Neben der Grundkonfiguration können wir zusätzliche Einstellungen in settings.py
vornehmen, um das Verhalten der Datenbank anzupassen. Das können Datenbank-spezifische Einstellungen sein, aber auch das Auslagern der Anmeldedaten:
# settings.py
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"OPTIONS": {
"read_default_file": "/path/to/my.cnf",
},
}
}
# my.cnf
[client]
database = meinedatenbank
user = meinbenutzer
password = geheim
default-character-set = utf8
Aber auch Optionen wie Zeitzone, Zeichenkodierung und weitere spezifische Einstellungen. Je nach Projektanforderungen.
TIME_ZONE = 'Europe/Berlin'
USE_TZ = True
Durch die Festlegung der Zeitzone und USE_TZ=True
stellen wir sicher, dass unsere Anwendung korrekt mit Datums- und Zeitangaben umgeht.
Erstes Modell erstellen und migrieren
Modelle sind essenziell in Django, da sie unsere Datenstrukturen definieren. Du kannst sie Dir wie ein Arbeitsblatt in einer Excel Datei vorstellen. Ein Modell ist eine Tabelle in der Datenbank. Beginnen wir mit einem einfachen Modell für Mitarbeiter, das den Namen eines Mitarbeiters speichert.
Beispiel Modell “Mitarbeiter”:
from django.db import models
class Mitarbeiter(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
Das Mitarbeiter
-Modell definiert ein Textfeld name
mit maximal 100 Zeichen. Die __str__
Methode definiert die Textdarstellung jedes Mitarbeiterobjekts in der Admin-Oberfläche.
Nach der Definition des Modells müssen wir eine Migration durchführen, damit Django die entsprechende Tabelle in der Datenbank erstellt.
python manage.py makemigrations
python manage.py migrate
Der erste Teil makemigrations erzeugt dabei eine neue Migrationsdatei. Migrationen stellen eine Versionierung der Datenbankänderungen dar. Du kannst damit nachvollziehen, was wann an der Datenbank geändert wurde und hat damit auch die Möglichkeit auf verschiedene Stände in der Vergangenheit zu springen.
Der Befehl migrate führt dann die eigentliche Änderung an der Datenbank durch. In unserem Fall wird damit also die Tabelle Mitarbeiter
mit der Spalte name
angelegt.
Jetzt wollen wir unser Modell aber auch sehen! Dafür müssen wir es noch in der Admin-Oberfläche registrieren. Ist das erledigt, sehen wir unsere Mitarbeiter in der Admin-Oberfläche und können sie auch ändern und verwalten.
Anzeige in der Django-Admin-Oberfläche
Registrierung in admin.py:
from django.contrib import admin
from .models import Mitarbeiter
admin.site.register(Mitarbeiter)
Damit wird ein Model einfach nur in der Administration dargestellt. Wenn Du detailliertere Konfigurationen vornehmen willst, kann das auch als Klasse formuliert werden:
from django.contrib import admin
from .models import Mitarbeiter
@admin.register(Mitarbeiter)
class MitarbeiterAdmin(admin.ModelAdmin):
pass
So hast Du viele weitere Möglichkeiten zur Verfügung, die Darstellung in der Admin-Oberfläche zu beeinflussen. Du kannst die Listendarstellung anpassen, die Sortierung, die Anzeige der Felder und vieles mehr.
Zusammenfassung
Damit haben wir die grundlegenden Schritte zur Datenbankkonfiguration in Django erledigt. Du hast gesehen, wie man eine Verbindung zur Datenbank herstellt, die Django-Einstellungen für die Datenbankverbindung anpasst, ein erstes Modell für Mitarbeiter erstellt, das migriert und in der Admin-Oberfläche registriert.
Hast Du Fragen oder Feedback? Lass es mich wissen – ich helfe gerne weiter!
Und falls Du den Anfang verpasst hast, gibt es hier noch eine Übersicht, über alle Teile.
Ingo Janssen ist ein Softwareentwickler mit über 10 Jahren Erfahrung in der Leitung seines eigenen Unternehmens.
Er studierte Wirtschaftsinformatik an der TH Deggendorf und hat Softwareentwicklung an der FOM Hochschule in München unterrichtet.
Ingo hat mit einer Vielzahl von Unternehmen zusammengearbeitet, von kleinen und mittelständischen Unternehmen bis hin zu MDAX- und DAX-gelisteten Unternehmen.
Ingo ist leidenschaftlich daran interessiert, sein Wissen und seine Expertise mit anderen zu teilen. Aus diesem Grund betreibt er einen YouTube-Kanal mit Programmier-Tutorials und eine Discord-Community, in der Entwickler miteinander in Kontakt treten und voneinander lernen können.
Sie können Ingo auch auf LinkedIn, Xing und Gulp finden, wo er Updates über seine Arbeit teilt und Einblicke in die Tech-Branche gibt.
YouTube | Discord | LinkedIn | Xing | Gulp Profile