VorwortWä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-DatenbankHier 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-SchnittstelleHier 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. ZusammenfassenDies 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:
|
<<: MySQL NULL-Datenkonvertierungsmethode (unbedingt lesen)
>>: Beispiel für die Konfiguration mehrerer virtueller Hosts in nginx
Drei Wissenspunkte: 1. CSS-Nachkommenselektor htt...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort Immer noch in Bezug auf das zuvor erwähnt...
In diesem Artikel erfahren Sie, wie Sie mit Vue e...
FEHLER 1290 (HY000) : Der MySQL-Server wird mit d...
In diesem Artikel wird der spezifische JavaScript...
1. Fügen Sie den folgenden Code zu http{} in ngin...
1.Tomcat-Optimierungskonfiguration (1) Ändern Sie...
Wenn ein Formularfeld in einem Formular deaktivier...
In diesem Artikel wird der spezifische JavaScript...
CSS steuert den Druckstil von Webseiten : Verwende...
In diesem Artikel wird der spezifische Code von V...
<br />In meiner jahrelangen professionellen ...
1. Formular 1. Die Rolle des Formulars HTML-Formu...
1. So überwachen Sie MySQL-Deadlocks in Produktio...