So fragen Sie Daten innerhalb eines bestimmten Zeitraums mit dem Vue-Frontend und dem Django-Backend ab

So fragen Sie Daten innerhalb eines bestimmten Zeitraums mit dem Vue-Frontend und dem Django-Backend ab

Vorwort

Während des Entwicklungsprozesses werden Sie häufig auf Funktionen wie das Filtern von Abfragen stoßen, beispielsweise das Abfragen von Daten innerhalb eines bestimmten Zeitraums statt aller Daten.

Auf diese Weise müssen wir die Zeitraumparameter an das Backend senden und dann die Abfrage auf dem Backend verarbeiten.

Hier verwenden wir ein einfaches Beispiel des Django-Backends und des Vue-Frontends, um die allgemeine Implementierung aufzuzeichnen.

Backend-Datenbank

Hier sind einige einfache Daten. Wichtig ist das Datum. Wir müssen sie filtern und basierend auf dem Datum an das Frontend zurückgeben.

Modelle.py

Klasse CountDownSign(Modelle.Modell):
 Name = Modelle.CharField(max_length=1000) 
 Datum = Modelle.Datumsfeld() 
 Zeichen = Modelle.CharField(max_length=200) 

serializers.py

Hier wird das drf-Framework vorgestellt, aber die Idee des Filterns von Abfragen hat nichts mit diesem Framework zu tun.

Klasse CountDownModelSerializer(Serializer.ModelSerializer):
 Klasse Meta:
 Modell = CountDownSign
 Felder = '__alle__'

 def erstellen(selbst, validierte Daten):
 returniere CountDownSign.objects.create(**validierte_Daten)

 def update(selbst, Instanz, validierte Daten):
 Instanzname = validierte_Daten.get('Name', Instanzname)
 Instanz.Datum = validierte_Daten.get('Datum', Instanz.Datum)
 Instanz.Sign = validierte_Daten.get('Sign', Instanz.Sign)
 Instanz.Speichern()
 Rückgabeinstanz

Ansichten.py

Bietet eine Schnittstelle zum Filtern von Abfragen. Lassen Sie sich die Start- und Enddaten vom Front-End übermitteln. Der Kerncode lautet wie folgt

obj = Modelle.CountDownSign.objects.filter(date__range=(Start, Ende))
Klasse CountDownViewSet(ModelViewSet):
 parser_classes = [JSONParser, FormParser]
 """Ansichtssatz"""
 Abfragesatz = Modelle.CountDownSign.Objekte.alle()
 serializer_class = CountDownModelSerializer
 # Suche Suchfelder = ('id', 'name', 'zeichen', 'datum')
 
 @action(Methoden=['posten'], Detail=Falsch)
 def getSE(selbst, Anfrage, *Argumente, **Kwargs):
 start = Anfrage.Daten.get('start', Keine)
 Ende = Anfrage.Daten.get('Ende', Keine)
 wenn Start und Ende:
  obj = Modelle.CountDownSign.objects.filter(date__range=(Start, Ende))

  wenn Objekt:
  ser = CountDownModelSerializer(Instanz=Objekt, viele=True)
  drucken(ser.data)
  JsonResponse zurückgeben({
   'Code': '200',
   'msg': 'Daten erfolgreich abgerufen',
   "Daten": ser.data
  })
  anders:
  JsonResponse zurückgeben({
   'Code': '1002',
   'msg': 'Get ist fehlgeschlagen',
  })
 anders:
  Antwort zurückgeben (Status = Status.HTTP_204_NO_CONTENT)

Frontend-Schnittstelle

Hier sind zwei Datumswähler zum Empfangen der Start- und Endzeit sowie verbindliche Ereignisse für die Suche.

 <div Klasse="Datumsauswahl">
 <div Klasse="Block" Stil="Float: links">
 <el-Datumsauswahl
  v-Modell="Wert1"
  Typ="Datum/Uhrzeit"
  Werteformat="jjjj-MM-tt"
  Platzhalter="Bitte wählen Sie ein Startdatum">
 </el-Datumsauswahl>
 </div>
 <div Klasse = "Block" Stil = "Float: links; Rand links: 20px;">
 <el-Datumsauswahl
  v-Modell="Wert2"
  Typ="Datum/Uhrzeit"
  Werteformat="jjjj-MM-tt"
  Platzhalter="Bitte wählen Sie eine Frist">
 </el-Datumsauswahl>
 </div>
 <el-button round style="float: left; margin-left: 20px;" @click="searchC">Suchen</el-button>
 </div>

Daten.js

Implementierte Schnittstellenfunktionen

Exportfunktion searchCountDown(start, end) {
 Rückgabeanforderung({
 URL: "countDown/getSE/",
 Methode: 'post',
 Daten: {
  Anfang: Anfang,
  Ende: Ende
 }
 })
}

Klickereignisimplementierung

Bestimmen Sie die Legitimität der Eingabe und akzeptieren Sie die Daten für die Anzeige der Datenbindung

sucheC() {
 Konsole.log(dieser.Wert1);
 Konsole.log(dieser.Wert2);
 wenn (dieser.Wert1 < dieser.Wert2) {
 searchCountDown(dieser.Wert1, dieser.Wert2).dann(res => {
  Konsole.log(Res.Daten);
  diese.searchRes = res.data;
 })
 } anders {
 this.$message.error("Zeitbereichsfehler");
 }
 },

Datenanzeige

 <div Klasse="Artikel">
 <ul>
 <li v-for="(item,index) in searchRes">
  <div Klasse = "ui-Raster" Stil = "Breite: 100 %; Höhe: 60px;">
  <div Klasse="vier breite Spalten"><span>{{ item.name }}</span></div>
  <div Klasse="vier breite Spalten"><span>{{ item.date }}</span></div>
  <div Klasse="vier breite Spalten"><span>{{ item.sign }}</span></div>
  <div class="vier breite Spalten">
  <el-button type="danger" icon="el-icon-delete" kreis @click="deleteC(item.id)"></el-button>
  <el-button type="primary" icon="el-icon-edit" kreis></el-button>
  </div>
  </div>
  <div class="ui-Teiler"></div>
 </li>
 </ul>

Ergebnisse der Operation

Es ist ersichtlich, dass die zurückgegebenen Daten alle innerhalb des Zeitbereichs liegen. Hier sind die am 25. Februar um 0:00 Uhr zurückgegebenen Daten tatsächlich die Daten vom 5. Februar. Da die Daten formatiert sind, werden auch die Daten vom 25. zurückgegeben.

Zusammenfassen

Dies ist das Ende dieses Artikels darüber, wie man Daten innerhalb eines bestimmten Zeitraums mit dem Vue-Frontend und dem Django-Backend abfragt. Weitere relevante Inhalte zu Vue- und Django-Datenabfragen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Perfekte Lösung für den Konflikt zwischen Django- und Vue-Syntax
  • Beispiel für den Aufbau eines Front-End- und Back-End-Trennungsprojekts mit Django+Vue.js
  • So implementieren Sie die Dateninteraktion zwischen Django und Vue
  • Methoden und Schritte zur Dateninteraktion mit Django und Vue
  • Detaillierte Erläuterung der domänenübergreifenden Umgebungskonfiguration von Django + Vue

<<:  MySQL NULL-Datenkonvertierungsmethode (unbedingt lesen)

>>:  Beispiel für die Konfiguration mehrerer virtueller Hosts in nginx

Artikel empfehlen

Vue verwendet drei Methoden zum Aktualisieren der Seite

Beim Schreiben von Projekten stoßen wir häufig au...

Mehrere Möglichkeiten zum Festlegen der Ablaufzeit von localStorage

Inhaltsverzeichnis Problembeschreibung 1. Basislö...

So verwenden Sie das JavaScript-Strategiemuster zum Validieren von Formularen

Inhaltsverzeichnis Überblick Formularvalidierung ...

Detaillierte Erklärung zur Erstellung von Schießspielen mit CocosCreator

Inhaltsverzeichnis Szeneneinstellung Spielressour...

Details zu Linux-Dateideskriptoren, Dateizeigern und Inodes

Inhaltsverzeichnis Linux - Dateideskriptor, Datei...

Sechs Tipps zur Verbesserung der Ladegeschwindigkeit von Webseiten

Zweitens hängt das Ranking von Schlüsselwörtern au...

Lösung für vergessenes Linux MySQL-Root-Passwort

Wenn Sie sich bei der Verwendung der MySQL-Datenb...

Detaillierte Erklärung zur Verwendung der Clip-Path-Eigenschaft in CSS

Verwendung von Clip-Pfaden Polygon Der Wert setzt...

So umbrechen Sie das HTML-Titelattribut

Als ich vor ein paar Tagen ein Programm schrieb, w...

Teilen Sie 10 der neuesten Web-Frontend-Frameworks (Übersetzung)

In der Welt der Webentwicklung sind Frameworks wei...

MySQL 8.0.18 Installations-Tutorial unter Windows (Abbildung)

Herunterladen Download-Adresse: https://dev.mysql...