Forutsetninger
Før du praktiserer eksemplene på denne veiledningen, må du fullføre følgende oppgaver:
- Installer Django versjon 3+ på Ubuntu 20+ (helst)
- Lag et Django-prosjekt
- Kjør Django-serveren for å kontrollere at serveren fungerer som den skal eller ikke.
Konfigurer en Django-app
EN. Kjør følgende kommando for å opprette en Django-app med navnet filterapp.
$ python3 administrere.py startapp filterappB. Kjør følgende kommando for å opprette brukeren for tilgang til Django-databasen. Hvis du har opprettet brukeren før, trenger du ikke å kjøre kommandoen.
$ python3 administrere.py skaperbrukerC. Legg til appnavnet i INSTALLERT_APP del av py fil.
INSTALLED_APPS = [..
'filterapp'
]
D. Opprett en mappe med navnet maler inne i filterapp mappen og still inn malens plasseringen av appen i MALER del av py fil.
MALER = [.. .
'DIRS': ['/ home / fahmida / django_pro / filterapp / templates'],
.. .
,
]
Lag en modell for databasetabellen
Åpne modeller.py fil fra filterapp mappen og legg til følgende skript for å definere strukturen til ansatte bord. Ansatt klasse er definert for å lage en tabell som heter ansatte med navn, post, e-post, avdeling, og blir med_dato Enger. Her, navn, innlegg, og avdeling felt vil lagre karakterdata, e-post feltet lagrer e-postadressen og blir med_dato feltet vil lagre datadata.
modeller.py
# Importer modeller-modulenfra django.db import modeller
# Definer klasse for å lage tabell for ansatte
klasse Ansatt (modeller.Modell):
navn = modeller.CharField (max_length = 50)
post = modeller.CharField (max_length = 40)
e-post = modeller.EmailField ()
avdeling = modeller.CharField (max_length = 30)
joinning_date = modeller.DateField ()
Kjør makemigrasjoner kommando for å opprette en ny migrering basert på endringene som er gjort av modellene.
$ python3 administrere.py makemigrations filterappKjør migrere kommando for å utføre SQL-kommandoene og opprette alle tabeller i databasen som er definert i modeller.py fil.
$ python3 administrere.py migrereEndre innholdet i admin.py fil med følgende innhold. Her, den ansatte klasse av modellene er registrert ved hjelp av registeret () metode for å vise register over ansatte tabeller i Django-administrasjons dashbordet.
admin.py
# Importer administrasjonsmodulfra django.bidrag importadministrator
# Importer ansattmodell
fra .modeller importerer ansatt
# Registrer ansattmodell
admin.nettstedet.registrer deg (ansatt)
Kjør følgende URL for å åpne påloggingssiden for Django-admin. Oppgi gyldig brukernavn og passord for å åpne Django Administration Dashboard for å få tilgang til databasetabellene.
Sett inn to eller flere medarbeiderposter for å bruke filteret på dataene. Her settes inn fem poster.
Opprett Søk.html filen inne i filterapp / maler / mappe med følgende skript. Dataene fra ansatt tabellen vises i denne malfilen. til loop brukes til å lese innholdet i objekt_liste variabel som sendes fra visningsfilen. De navn, innlegg, og avdeling verdiene til ansatte vil vises ved hjelp av listen.
Søk.html
Django filterveiledning
Ansatteliste
emp.Navn (emp.post )
emp.avdeling avdeling
% for emp i object_list%
% endfor%
Åpne utsikt.py fil fra filterapp mappen og endre innholdet i filen med følgende skript. Modell- og malnavn er definert i skriptet.
utsikt.py
# Import ListView-modulfra django.utsikt.generisk import ListView
# Importer ansatt-modul
fra .modeller importerer ansatt
# Importer Q-modul
fra django.db.modeller importerer Q
# Definer klasse for filtrering av data
class SearchEmployee (ListView):
# Definer modell
modell = Ansatt
# Definer mal
template_name = 'søk.html '
Endre innholdet i nettadresser.py fil med følgende innhold. I manuset er 'søkEmpbanen er definert for å kalle SøkMedarbeider.som_visning () metoden som vil sende alle data og de filtrerte dataene til ansatte tabellen til malfilen.
nettadresser.py
# Importer administrasjonsmodulfra django.bidrag importadministrator
# Importer bane og inkluder modul
fra django.urls importsti, inkluderer
# Importer søkemodulmodul
fra filterapp.visninger importerer SearchEmployee
urlpatterns = [
# Definer banen for admin
sti ('admin /', admin.nettstedet.nettadresser),
# Definer stien for søk
sti ('searchEmp /', SearchEmployee.as_view ()),
]
Følgende utdata vises uten å filtrere for følgende URL.
http: // localhost: 8000 / SerachEmp
Filtrer data ved enkel filtrering
Legg til følgende linje på slutten av utsikt.py fil for å filtrere postene til ansatte tabell hvor verdien av post feltet er 'Regnskapsfører'.
# Bruk grunnleggende filtreringqueryset = Ansatt.gjenstander.filter (post = 'Accountant')
Følgende utdata vises etter bruk av grunnleggende filtrering.
Filtrer data med flere felt
Legg til følgende linje på slutten av utsikt.py fil for å filtrere postene til ansatte tabell hvor verdien av avdeling feltet er 'HT'og eposten feltet er '[e-postbeskyttet]'.
# Bruk filtrering med flere feltqueryset = Ansatt.gjenstander.filter (department = 'HR', email = '[email protected]')
Følgende utdata vises etter bruk av flere filtreringer.
Filtrer data med Q-objekt
Legg til følgende linje på slutten av utsikt.py fil for å filtrere postene til ansatte tabell hvor verdien av post feltet er 'sjef'eller verdien av avdeling feltet er 'Salg'.
# Bruk filtrering ved å bruke Q-objekterqueryset = Ansatt.gjenstander.filter (Q (post = 'Manager') | Q (department = 'Sales'))
Følgende utdata vises etter bruk av Q-objektfiltrering.
Filtrer data ved å bruke filterkjetting
Legg til følgende linje på slutten av utsikt.py fil for å filtrere postene til ansatte tabell hvor verdien av avdeling feltet vil bli sjekket først, og hvis det returnerer sant, blir verdien av Navn feltet vil bli sjekket.
# Bruk filtrering ved å lenkequeryset = Ansatt.gjenstander.filter (department = 'HR').filter (name = 'Mehrab Hossain')
Følgende utdata vises etter bruk av filterkjetting.
Konklusjon
Dataene kan filtreres i Django på mange måter basert på applikasjonskravene. Fire forskjellige måter å filtrere på ble forklart i denne veiledningen for å forstå det grunnleggende om Django-filtrering. Dette er enkel filtrering, flerfiltrering, filtrering med Q-objekt og filterkjetting.