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
Beim Schreiben von Projekten stoßen wir häufig au...
Inhaltsverzeichnis Problembeschreibung 1. Basislö...
Inhaltsverzeichnis Tomcat-Download-Tutorial Tutor...
Inhaltsverzeichnis Überblick Formularvalidierung ...
Inhaltsverzeichnis 1. Standardmäßig anzeigen und ...
Ich habe hier eine Warentabelle erstellt. Schauen...
Inhaltsverzeichnis Szeneneinstellung Spielressour...
Inhaltsverzeichnis Linux - Dateideskriptor, Datei...
Zweitens hängt das Ranking von Schlüsselwörtern au...
Wenn Sie sich bei der Verwendung der MySQL-Datenb...
Verwendung von Clip-Pfaden Polygon Der Wert setzt...
mysql ruft alle Daten oder Monate in einem Zeitra...
Als ich vor ein paar Tagen ein Programm schrieb, w...
In der Welt der Webentwicklung sind Frameworks wei...
Herunterladen Download-Adresse: https://dev.mysql...