Erstellen von Modellen in Django: Eine Schritt-für-Schritt-Anleitung (Teil 1)

Building Models in Django: A Step-by-Step Guide (Part 1)

Table of Contents

    Als ich anfing, Django zu lernen, war ich von der schieren Anzahl an Konzepten – Modelle, Ansichten, Vorlagen – überwältigt. Es war, als würde ich versuchen, aus einem Feuerwehrschlauch zu trinken. Aber sobald ich verstanden hatte, wie Modelle funktionieren, ergab auch der Rest des Frameworks seinen Platz. Modelle sind die Grundlage jedes Django-Projekts, und in diesem Tutorial möchte ich Sie von Grund auf durch deren Erstellung führen. Wir werden alles abdecken, vom Einrichten Ihrer Umgebung bis zum Erstellen eines funktionalen Product . Am Ende haben Sie ein solides Verständnis davon, wie Modelle funktionieren und wie Sie sie effektiv nutzen können.

    Lassen Sie uns nicht einfach eintauchen – wir gehen Schritt für Schritt vor, sodass kein Detail ungeklärt bleibt.

    Django einrichten: Von Grund auf

    Der erste Schritt in jedem Django-Projekt besteht darin, sicherzustellen, dass Ihre Umgebung richtig eingerichtet ist. Bevor wir überhaupt an Modelle denken, müssen wir unseren Arbeitsbereich vorbereiten. Unter Ubuntu beginnt dies damit, sicherzustellen, dass Sie Python zusammen mit seinem Paketmanager pip installiert haben. Sie können beides mit einem einfachen Befehl installieren:

     sudo apt update && sudo apt install python3 python3-pip

    Sobald dies erledigt ist, bestätigen Sie die Installation, indem Sie python3 --version und pip3 --version ausführen. Daraufhin sollten die installierten Versionen von Python und pip angezeigt werden. Diese Tools sind für alles, was wir tun werden, unerlässlich. Es lohnt sich also, noch einmal zu überprüfen, ob sie funktionieren.

    Wenn ich ein neues Django-Projekt starte, richte ich immer zuerst eine virtuelle Umgebung ein. Dies ist eine dedizierte Umgebung für die Abhängigkeiten Ihres Projekts, die diese von Ihrer systemweiten Python-Installation isoliert. Stellen Sie es sich wie eine Schutzblase für Ihr Projekt vor. Um eine solche zu erstellen, benötigen Sie das venv Modul, das standardmäßig mit Python installiert wird. Navigieren Sie zu Ihrem Projektordner und erstellen Sie eine virtuelle Umgebung:

     python3 -m venv env

    Aktivieren Sie es durch Ausführen von:

     source env/bin/activate

    Sie werden feststellen, dass sich die Eingabeaufforderung Ihres Terminals in „include (env) ändert, um Sie darüber zu informieren, dass die virtuelle Umgebung aktiv ist.

    Nachdem unsere Umgebung eingerichtet ist, können wir Django selbst installieren. Installieren Sie es mithilfe von pip mit:

     pip install django

    Sie können die Version überprüfen, um sicherzustellen, dass sie korrekt installiert wurde:

     python -m django --version

    Dadurch wird sichergestellt, dass alles auf dem neuesten Stand und einsatzbereit ist. Jetzt kommt der spannende Teil – das Starten eines neuen Django-Projekts. Für dieses Tutorial erstellen wir ein Projekt namens inventory_system . Führen Sie Folgendes aus:

     django-admin startproject inventory_system .

    Der Punkt am Ende ist entscheidend – er weist Django an, das Projekt im aktuellen Verzeichnis und nicht in einem verschachtelten Ordner zu erstellen. So bleibt alles übersichtlich und überschaubar.

    Wenn Sie einen Blick darauf werfen, werden Sie feststellen, dass Django mehrere Dateien und Ordner für Sie erstellt hat. Es gibt die Datei manage.py , die Sie zur Interaktion mit dem Projekt verwenden, und einen Unterordner, der nach Ihrem Projekt benannt ist und Konfigurationsdateien wie settings.py und urls.py enthält. An diesem Punkt können Sie den Entwicklungsserver bereits ausführen:

     python manage.py runserver

    Öffnen Sie einen Browser, rufen Sie http://127.0.0.1:8000 auf und Sie sehen die Django-Willkommensseite. Das ist immer ein befriedigender Moment, denn dann funktioniert alles wie erwartet.

    Erstellen einer Django-App für Produkte

    Eine Django -App ist ein modularer Teil Ihres Projekts, der normalerweise eine bestimmte Funktion darstellt. Für dieses Tutorial erstellen wir eine App zur Verwaltung von Produkten und Bewertungen. Um die Struktur der App zu generieren, führen Sie Folgendes aus:

     python manage.py startapp products

    Sobald die App erstellt ist, registrieren Sie sie in Ihrem Projekt. Öffnen Sie settings.py und fügen Sie 'products' , zur Liste INSTALLED_APPS hinzu:

     INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'products', # New app ]

    Dieser Schritt weist Django an, die App in das Projekt aufzunehmen. Nachdem unsere App eingerichtet ist, können wir mit dem Erstellen von Modellen beginnen.

    Einführung des Produktmodells

    Modelle in Django sind Python-Klassen, dieVerfeinern Sie die Struktur Ihrer Datenbanktabellen. Jedes Attribut im Modell wird zu einer Spalte, und Django übernimmt die ganze schwere Arbeit, diese Python-Klassen in echte SQL-Anweisungen umzuwandeln. Für unser Beispiel beginnen wir mit einem Product . Dieses Modell enthält Felder für allgemeine Attribute wie Produktname, Beschreibung, Preis und Lagerbestand. Darüber hinaus fügen wir ein slug -Feld hinzu, um SEO-freundliche URLs zu erstellen, ein BooleanField um zu markieren, ob das Produkt aktiv ist, und Zeitstempel, wann das Produkt erstellt und aktualisiert wurde.

    Hier ist der Code für das Produktmodell:

     from django.db import models from django.utils.text import slugify from django.urls import reverse class Product(models.Model): name = models.CharField(max_length=200) description = models.TextField() price = models.DecimalField(max_digits=10, decimal_places=2) stock = models.IntegerField() is_active = models.BooleanField(default=True) slug = models.SlugField(unique=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) release_date = models.DateField(null=True, blank=True) image = models.ImageField(upload_to='product_images/', null=True, blank=True) def __str__(self): return self.name def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.name) super().save(*args, **kwargs) def get_absolute_url(self): return reverse('product_detail', kwargs={'slug': self.slug})

    Aufschlüsselung

    Das Product verwendet mehrere Feldtypen, um verschiedene Attribute eines Produkts darzustellen. Beispielsweise ist das Feld „ name ein CharField mit einer maximalen Länge von 200 Zeichen, während das Feld description ein TextField für längere Texte ist. Das Feld price “ ist ein DecimalField , das es uns ermöglicht, genaue Geldbeträge zu speichern, indem wir die Gesamtzahl der Ziffern ( max_digits=10 ) und die Anzahl der Dezimalstellen ( decimal_places=2 ) angeben. Ebenso ist stock ein IntegerField zur Darstellung von Lagerbeständen und is_active ist ein BooleanField das angibt, ob das Produkt derzeit verfügbar ist.

    Besonders interessant ist das slug Feld. Es ist ein SlugField , das zum Speichern von URL-freundlichem Text verwendet wird, der oft aus dem Produktnamen abgeleitet wird. Um sicherzustellen, dass jedes Produkt einen eindeutigen Slug hat, setzen wir unique=True . Indem wir die save -Methode überschreiben, verwenden wir Djangos slugify Funktion, um automatisch einen Slug zu generieren, wenn das Produkt zum ersten Mal gespeichert wird.

    Zur Verfolgung von Zeitstempeln haben wir die Felder created_at und updated_at hinzugefügt. Das Feld created_at verwendet auto_now_add=True um den Zeitstempel bei der ersten Erstellung des Datensatzes festzulegen, während updated_at auto_now=True verwendet, um den Zeitstempel bei jeder Änderung des Datensatzes zu aktualisieren. Es gibt auch ein image zum Speichern von Produktbildern. Dies erfordert die Pillow-Bibliothek, die Sie mit pip install pillow installieren können.

    Zwei zusätzliche Methoden verbessern die Benutzerfreundlichkeit dieses Modells. Die Methode __str__ definiert, wie das Produkt im Django-Admin oder beim Drucken angezeigt wird. In diesem Fall gibt sie einfach den Namen des Produkts zurück. Die Methode get_absolute_url generiert unter Verwendung seines Slugs eine URL für das Produkt. Dadurch bleibt die URL-Logik zentralisiert und das Hardcodieren von Pfaden an anderen Stellen im Code wird vermieden.


    Migrationen durchführen

    Um dieses Modell auf die Datenbank anzuwenden, müssen wir Migrationen erstellen und ausführen. So übersetzt Django unseren Python-Code in Datenbankschemaänderungen. Erstellen Sie zunächst die Migrationen mit:

     python manage.py makemigrations

    Wenden Sie sie dann mit folgendem Befehl auf die Datenbank an:

     python manage.py migrate

    Wenn alles funktioniert hat, hat Django eine products_product -Tabelle in Ihrer Datenbank erstellt. Ihr Product ist jetzt live und einsatzbereit!


    Zusammenfassung Teil 1

    Bisher haben wirSie haben Django eingerichtet, ein Projekt und eine App erstellt und ein funktionales Product erstellt. Im nächsten Teil erstellen wir ein Review Modell, stellen Beziehungen zwischen Modellen her und tauchen in die Datenbankabfrage mit Djangos ORM ein. Wenn Sie bisher mitgelesen haben, nehmen Sie sich etwas Zeit, um Ihr neues Modell zu erkunden – führen Sie den Entwicklungsserver aus, experimentieren Sie mit dem Django-Administrator und sehen Sie es in Aktion. Bleiben Sie dran für Teil 2!

    Published: 3 weeks, 1 day ago.