Förutsättningar
Innan du övar på exemplen i denna handledning måste du slutföra följande uppgifter:
- Installera Django version 3+ på Ubuntu 20+ (helst)
- Skapa ett Django-projekt
- Kör Django-servern för att kontrollera att servern fungerar korrekt eller inte.
Ställ in en Django-app
A. Kör följande kommando för att skapa en Django-app med namnet filterapp.
$ python3 hantera.py startapp filterappB. Kör följande kommando för att skapa användaren för åtkomst till Django-databasen. Om du har skapat användaren innan behöver du inte köra kommandot.
$ python3 hantera.py skaparanvändareC. Lägg till appnamnet i INSTALLERAD_APP del av py fil.
INSTALLED_APPS = [..
'filterapp'
]
D. Skapa en mapp med namnet mallar inuti filterapp mapp och ställ in mallar plats för appen i MALLAR del av py fil.
MALLAR = [.. .
'DIRS': ['/ home / fahmida / django_pro / filterapp / mallar'],
.. .
,
]
Skapa en modell för databastabellen
Öppna modeller.py fil från filterapp mappen och lägg till följande skript för att definiera strukturen för anställda tabeller. Anställd klass definieras för att skapa en tabell med namnet anställda med namn, post, e-post, avdelning, och Inträdesdatum fält. Här, namn, inlägg, och avdelning fält kommer att lagra teckendata, e-post fältet lagrar e-postadressen och Inträdesdatum fältet kommer att lagra datumdata.
modeller.py
# Importera modeller-modulenfrån django.db-importmodeller
# Definiera klass för att skapa tabell för anställda
klass Anställd (modeller.Modell):
namn = modeller.CharField (max_length = 50)
post = modeller.CharField (max_length = 40)
e-post = modeller.EmailField ()
avdelning = modeller.CharField (max_length = 30)
joinning_date = modeller.DateField ()
Springa det makemigrationer kommando för att skapa en ny migration baserat på de ändringar som gjorts av modellerna.
$ python3 hantera.py makemigrations filterappSpringa det flytta kommando för att utföra SQL-kommandon och skapa alla tabeller i databasen som definieras i modeller.py fil.
$ python3 hantera.py migreraÄndra innehållet i administration.py fil med följande innehåll. Här, den anställde klass av modellerna registreras med registret() metod för att visa register över anställda i Django-administrationspanelen.
administration.py
# Importera administratörsmodulfrån django.bidrag importadministratör
# Importera anställdsmodell
från .modeller importerar anställd
# Registrera anställdsmodell
administration.webbplats.register (Anställd)
Kör följande URL för att öppna inloggningssidan för Django-admin. Ange giltigt användarnamn och lösenord för att öppna Django Administration Dashboard för att komma åt databastabellerna.
Infoga två eller flera anställdsposter för att tillämpa filtret på data. Här infogas fem poster.
Skapa Sök.html fil inuti filterapp / mallar / mapp med följande skript. Uppgifterna från anställd tabellen visas i denna mallfil. för loop används för att läsa innehållet i objekt_lista variabel som skickas från visningsfilen. De namn, inlägg, och avdelning värdena för anställda tabellen visas med hjälp av listan.
Sök.html
Django filterhandledning
Lista över anställda
emp.namn (emp.posta)
emp.avdelning avdelning
% för emp i objekt_lista%
% endfor%
Öppna utsikt.py fil från filterapp mappen och ändra innehållet i filen med följande skript. Modell- och mallnamn definieras i skriptet.
utsikt.py
# Import ListView-modulfrån django.utsikt.generisk import ListView
# Importera anställdsmodul
från .modeller importerar anställd
# Importera Q-modul
från django.db.modeller importerar Q
# Definiera klass för filtrering av data
klass Sök medarbetare (ListView):
# Definiera modell
modell = anställd
# Definiera mall
template_name = 'sök.html '
Ändra innehållet i webbadresser.py fil med följande innehåll. I manuset står 'searchEmp'väg definieras för att anropa Sök Anställd.as_view () metod som skickar all data och filtrerade data från anställda tabellen till mallfilen.
webbadresser.py
# Importera administratörsmodulfrån django.bidrag importadministratör
# Importera sökväg och inkludera modul
från django.webbadress för webbadresser, inkludera
# Importera sökmedlemmodul
från filterapp.visningar importerar SearchEmployee
urlmönster = [
# Definiera sökvägen för admin
sökväg ('admin /', admin.webbplats.webbadresser),
# Definiera sökvägen
sökväg ('searchEmp /', SearchEmployee.as_view ()),
]
Följande utdata visas utan filtrering för följande URL.
http: // localhost: 8000 / SerachEmp
Filtrera data genom enkel filtrering
Lägg till följande rad i slutet av utsikt.py fil för att filtrera posterna för anställda tabell där värdet på posta fältet är 'Revisor''.
# Tillämpa grundläggande filtreringqueryset = Anställd.föremål.filter (post = 'Accountant')
Följande utdata visas efter tillämpning av grundläggande filtrering.
Filtrera data med flera fält
Lägg till följande rad i slutet av utsikt.py fil för att filtrera posterna för anställda tabell där värdet på avdelning fältet är 'HT'och eposten fältet är '[e-postskyddad]'.
# Tillämpa filtrering med flera fältqueryset = Anställd.föremål.filter (department = 'HR', email = '[email protected]')
Följande utdata visas efter att flera filter har tillämpats.
Filtrera data med Q-objekt
Lägg till följande rad i slutet av utsikt.py fil för att filtrera posterna för anställda tabell där värdet på posta fältet är 'Chef'eller värdet på avdelning fältet är 'Försäljning''.
# Tillämpa filtrering med hjälp av Q-objektqueryset = Anställd.föremål.filter (Q (post = 'Manager') | Q (department = 'Sales'))
Följande utdata visas efter att Q-objektfiltrering har tillämpats.
Filtrera data med hjälp av filterkedjning
Lägg till följande rad i slutet av utsikt.py fil för att filtrera posterna för anställda tabell där värdet på avdelning fältet kommer att kontrolleras först och om det returnerar sant så kommer värdet på namn fält kommer att kontrolleras.
# Tillämpa filtrering genom kedjningqueryset = Anställd.föremål.filter (department = 'HR').filter (name = 'Mehrab Hossain')
Följande utdata kommer att visas efter filterkedjning.
Slutsats
Uppgifterna kan filtreras i Django på många sätt baserat på applikationskraven. Fyra olika sätt att filtrera förklarades i denna handledning för att förstå grunderna för Django-filtrering. Dessa är enkel filtrering, multipelfiltrering, filtrering med Q-objekt och filterkedjning.