Voraussetzungen
Bevor Sie die Beispiele dieses Tutorials üben, müssen Sie die folgenden Aufgaben ausführen:
- Installieren Sie die Django-Version 3+ auf Ubuntu 20+ (vorzugsweise)
- Erstellen Sie ein Django-Projekt
- Führen Sie den Django-Server aus, um zu überprüfen, ob der Server ordnungsgemäß funktioniert oder nicht.
Richten Sie eine Django-App ein
EIN. Führen Sie den folgenden Befehl aus, um eine Django-App namens zu erstellen Filterapp.
$ python3 verwalten.py startapp filterappB. Führen Sie den folgenden Befehl aus, um den Benutzer für den Zugriff auf die Django-Datenbank zu erstellen. Wenn Sie den Benutzer zuvor erstellt haben, müssen Sie den Befehl nicht ausführen.
$ python3 verwalten.py erstelltsuperuserC. Fügen Sie den App-Namen im . hinzu INSTALLED_APP Teil von dem py Datei.
INSTALLED_APPS = […
'filterapp'
]
D. Erstellen Sie einen Ordner mit dem Namen Vorlagen innerhalb der Filterapp Ordner und legen Sie die Vorlage Standort der App im VORLAGEN Teil von dem py Datei.
VORLAGEN = [… .
'DIRS': ['/home/fahmida/django_pro/filterapp/templates'],
… .
,
]
Erstellen Sie ein Modell für die Datenbanktabelle
Öffne das Modelle.py Datei aus dem Filterapp Ordner und fügen Sie das folgende Skript hinzu, um die Struktur von . zu definieren Angestellte Tabellen. Mitarbeiter Klasse ist definiert, um eine Tabelle namens table zu erstellen Angestellte mit Name, Post, E-Mail, Abteilung, und Beitrittsdatum Felder. Hier, Name, Post, und Abteilung Felder speichern Zeichendaten, die Email Feld speichert die E-Mail-Adresse und die Beitrittsdatum Feld speichert Datumsdaten.
Modelle.py
# Modul Importieren von Modellenvon django.DB-Importmodelle
# Klasse definieren, um eine Mitarbeitertabelle zu erstellen
Klasse Mitarbeiter (Modelle.Modell):
Name = Modelle.CharField(max_length=50)
Beitrag = Modelle.CharField(max_length=40)
E-Mail = Modelle.E-Mail-Feld()
Abteilung = Modelle.CharField(max_length=30)
Joinning_date = Modelle.Datumsfeld()
Führen Sie die machenmigrationen Befehl zum Erstellen einer neuen Migration basierend auf den von den Modellen vorgenommenen Änderungen.
$ python3 verwalten.py makemigrations filterappFühren Sie die Wandern Befehl, um die SQL-Befehle auszuführen und alle Tabellen in der Datenbank zu erstellen, die in der Modelle.py Datei.
$ python3 verwalten.py migrierenÄndern Sie den Inhalt der Administrator.py Datei mit folgendem Inhalt. Hier, der Mitarbeiter Klasse der Modelle wird registriert mit das Register() Methode zum Anzeigen der Aufzeichnungen von Mitarbeitern Tabellen im Django-Administrations-Dashboard.
Administrator.py
# Admin-Modul importierenvon django.contrib import admin
# Mitarbeitermodell importieren
von .Modelle importieren Mitarbeiter
# Mitarbeitermodell registrieren
Administrator.Seite? ˅.registrieren (Mitarbeiter)
Führen Sie die folgende URL aus, um die Django-Admin-Anmeldeseite zu öffnen. Geben Sie den gültigen Benutzernamen und das Passwort ein, um das . zu öffnen Django-Administrations-Dashboard um auf die Datenbanktabellen zuzugreifen.
Fügen Sie zwei oder mehr Mitarbeiterdatensätze ein, um den Filter auf die Daten anzuwenden. Hier werden fünf Datensätze eingefügt.
Erstellen Sie die Suche.html Datei in der Filterapp/Vorlagen/ Ordner mit folgendem Skript. Die Daten aus dem Mitarbeiter Tabelle wird in dieser Vorlagendatei angezeigt. zum Schleife wird verwendet, um den Inhalt der Objektliste Variable, die von der Ansichtsdatei übergeben wird. Das Name, Post, und Abteilung Werte der Angestellte Tabelle wird mit Hilfe der Liste angezeigt.
Suche.html
Django-Filter-Tutorial
Mitarbeiterliste
emp.Name ( emp.posten )
emp.Abteilung Abteilung
% für emp in object_list %
% endfor %
Öffne das Ansichten.py Datei aus dem Filterapp Ordner und ändern Sie den Inhalt der Datei mit dem folgenden Skript. Modell- und Vorlagennamen werden im Skript definiert.
Ansichten.py
# ListView-Modul importierenvon django.Ansichten.generischer Import ListView
# Mitarbeitermodul importieren
von .Modelle importieren Mitarbeiter
# Q-Modul importieren
von django.db.Modelle importieren Q
# Klasse zum Filtern von Daten definieren
Klasse SearchEmployee(ListView):
# Modell definieren
Modell = Mitarbeiter
# Vorlage definieren
template_name = 'suchen.html'
Ändern Sie den Inhalt der URLs.py Datei mit folgendem Inhalt. Im Skript wird das 'searchEmp' Pfad ist definiert, um die SucheMitarbeiter.as_view() Methode, die alle Daten und die gefilterten Daten der Angestellte Tabelle zur Vorlagendatei.
URLs.py
# Admin-Modul importierenvon django.contrib import admin
# Pfad importieren und Modul einbinden
von django.URL-Importpfad, einschließen
# SearchEmployee-Modul importieren
von filterapp.Ansichten importieren SearchEmployee
URLmuster = [
# Definiere den Pfad für admin
path('admin/', admin.Seite? ˅.URLs),
# Definieren Sie den Pfad für die Suche
path('searchEmp/', SearchEmployee.as_view()),
]
Die folgende Ausgabe wird angezeigt, ohne dass eine Filterung für die folgende URL angewendet wird.
http://localhost:8000/SerachEmp
Daten durch einfaches Filtern filtern
Fügen Sie die folgende Zeile am Ende des hinzu Ansichten.py Datei zum Filtern der Datensätze der Angestellte Tabelle, in der der Wert der Post Feld ist 'Buchhalter'.
# Grundlegende Filterung anwendenAbfragemenge = Mitarbeiter.Objekte.filter(post ='Buchhalter')
Die folgende Ausgabe wird angezeigt, nachdem die grundlegende Filterung angewendet wurde.
Daten mit mehreren Feldern filtern
Fügen Sie die folgende Zeile am Ende des hinzu Ansichten.py Datei zum Filtern der Datensätze der Angestellte Tabelle, in der der Wert der Abteilung Feld ist 'HT' und die Email Feld ist '[E-Mail geschützt]'.
# Filtern mit mehreren Feldern anwendenAbfragemenge = Mitarbeiter.Objekte.filter(abteilung='HR', email='[email protected]')
Die folgende Ausgabe wird angezeigt, nachdem mehrere Filter angewendet wurden.
Daten mit Q-Objekt filtern
Fügen Sie die folgende Zeile am Ende des hinzu Ansichten.py Datei zum Filtern der Datensätze der Angestellte Tabelle, in der der Wert der Post Feld ist 'Manager' oder der Wert des Abteilung Feld ist 'Der Umsatz'.
# Filtern mithilfe von Q-Objekten anwendenAbfragemenge = Mitarbeiter.Objekte.filter( Q(post='Manager') | Q(department='Sales'))
Die folgende Ausgabe wird angezeigt, nachdem die Q-Objektfilterung angewendet wurde.
Filtern von Daten mithilfe der Filterverkettung
Fügen Sie die folgende Zeile am Ende des hinzu Ansichten.py Datei zum Filtern der Datensätze der Angestellte Tabelle, in der der Wert der Abteilung Feld wird zuerst überprüft und wenn es true zurückgibt, dann wird der Wert des Name Feld wird geprüft.
# Filtern durch Verkettung anwendenAbfragemenge = Mitarbeiter.Objekte.filter(abteilung='HR').filter(name='Mehrab Hossain')
Die folgende Ausgabe erscheint nach dem Anwenden der Filterverkettung.
Fazit
Die Daten können in Django je nach Anwendungsanforderung auf vielfältige Weise gefiltert werden. In diesem Tutorial wurden vier verschiedene Filtermethoden erklärt, um die Grundlagen der Django-Filterung zu verstehen. Dies sind einfache Filterung, Mehrfachfilterung, Filterung mit Q-Objekt und Filterverkettung.