In unserem vorherigen Artikel haben wir die Grundlagen der Einrichtung eines Django-Projekts behandelt und unser Übungsmodell erstellt, das wir im Frontend als Liste angezeigt haben. In diesem Artikel befassen wir uns intensiv mit der Durchführung von CRUD-Vorgängen. Für diejenigen, die es nicht kennen: CRUD steht für Erstellen, Lesen, Aktualisieren und Löschen – im Wesentlichen die vier grundlegenden Aktionen, die Sie mit Ihren Daten durchführen können.
Da wir nun unsere API im App-Ordner eingerichtet haben, erweitern wir einfach die Indexansicht, um Erstellungs-, Aktualisierungs- und Löschanfragen zu verarbeiten.
Lassen Sie uns ein Formular einrichten, mit dem Benutzer Übungen erstellen können. Zu diesem Zweck werden wir wieder HTML-Vorlagen verwenden. Erstellen Sie zunächst eine neue Vorlage mit dem Namen add_exercise.html im Ordner app/templates.
Als nächstes fügen wir in unsere Vorlage „index.html“ die Vorlage „add_exercise.html“ mit der folgenden Methode ein:
{% extends "base.html" %} {% block content %}Exercises
{% include 'add_exercise.html' %} ... {% endblock %}
Wir verwenden hier das Tag „include“, das die Zusammensetzbarkeit in HTML-Vorlagen fördert und die Pflege und das Verständnis unseres Codes erleichtert. Wenn Sie die Seite in Ihrem Browser aktualisieren, sollte das Formular auf dem Bildschirm erscheinen.
In unserem HTML verwenden wir das Tag
Wir verwenden erneut das Tag
Und in unserer Übungsansicht werden wir die folgenden Änderungen vornehmen, um zwischen Anfragen zu unterscheiden.
def index(request): if request.method == 'POST': create = 'create' in request.POST update = 'update' in request.POST if create == True: models.Exercise.create(request) elif update == True: models.Exercise.update(request) return redirect('/') exercises = ( models.Exercise.objects.all().order_by("created_at") ) return render(request, "index.html", context={'exercises': exercises})
Wir prüfen den Namen der Schaltfläche und leiten die Anfrage entsprechend an die entsprechende Übungsmethode weiter.
Fügen wir dem Übungsmodell in app/models.py eine Aktualisierungsklassenmethode hinzu.
def update(request): id = request.POST.get('id') title = request.POST.get('title') date = request.POST.get('date') exercise = Exercise.objects.filter(pk=id).update(title=title, date=date) return exercise
Um eine Zeile in der Datenbank zu aktualisieren, können wir die im Übungsmodell verfügbare Aktualisierungsmethode verwenden. Vor der Aktualisierung müssen wir jedoch sicherstellen, dass wir die richtige Übung aktualisieren. Dazu filtern wir die Übungen nach dem Primärschlüssel, also der ID, und aktualisieren nur diese spezifische Übung.
Ähnlich fügen wir neben jeder Übung in der Vorlage „übung.html“ eine Schaltfläche zum Löschen ein.
Wir legen „delete“ als Wert des Namensattributs fest und erweitern in „views.py“ die if...elif-Anweisungen, um den Löschvorgang abzuwickeln.
def index(request): if request.method == 'POST': create = 'create' in request.POST update = 'update' in request.POST delete = 'delete' in request.POST if create == True: models.Exercise.create(request) elif update == True: models.Exercise.update(request) elif delete == True: models.Exercise.delete(request) return redirect('/') exercises = ( models.Exercise.objects.all().order_by("created_at") ) return render(request, "index.html", context={'exercises': exercises})
Und im Übungsmodell fügen wir die Klassenmethode delete hinzu.
def delete(request): id = request.POST.get('id') is_deleted = Exercise.objects.filter(pk=id).delete() if is_deleted == 1: return True return False
Mit dieser Ergänzung haben wir CRUD-Operationen erfolgreich in unserer Python- und Django-Anwendung implementiert.
from django.http import HttpResponseRedirect def index(request): ... return redirect('/') # or return HttpResponseRedirect(request.META['HTTP_REFERER'])
Zusammenfassend lässt sich sagen, dass wir durch die effektive Verwaltung unserer POST-Anfragen und die Sicherstellung einer ordnungsgemäßen Weiterleitung ein nahtloses Benutzererlebnis schaffen und gleichzeitig CRUD-Vorgänge in unserer Django-Anwendung implementieren können.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3