Eeldused
Enne selle õpetuse näidete kasutamist peate täitma järgmised ülesanded:
- Installige Django versioon 3+ Ubuntu 20+ (eelistatult)
- Looge Django projekt
- Käivitage Django server, et kontrollida, kas server töötab korralikult või mitte.
Seadistage Django rakendus
A. Django nimelise rakenduse loomiseks käivitage järgmine käsk filterapp.
$ python3 hallata.py startapp filterappB. Käivitage järgmine käsk, et luua kasutaja Django andmebaasile juurdepääsuks. Kui olete kasutaja varem loonud, ei pea seda käsku käivitama.
$ python3 hallata.py loob ülikasutajaC. Lisage rakenduse nimi rakendusse INSTALLED_APP osa py faili.
INSTALLED_APPS = […
'filterapp'
]
D. Looge kaust nimega mallid sees filterapp kaust ja määrake malli omad rakenduse asukoht MALLID osa py faili.
MALLID = [… .
'DIRS': ['/ home / fahmida / django_pro / filterapp / templates'],
… .
,
]
Looge andmebaasitabeli mudel
Ava mudelid.py fail failist filterapp kaust ja lisage järgmise skripti struktuuri määratlemiseks töötajad tabelid. Töötaja klass on määratletud nimega tabeli loomiseks töötajad koos nimi, postitus, e-post, osakond, ja liitumise kuupäev väljad. Siin, nimi, postitus, ja osakond väljad talletavad märgiandmed, e-post väli salvestab e-posti aadressi ja liitumise kuupäev väli salvestab kuupäeva andmed.
mudelid.py
# Mudelite importimise moodulalates django.db impordimudelid
# Määratlege töötajate tabeli loomiseks klass
klassi töötaja (mudelid.Mudel):
nimi = mudelid.CharField (max_pikkus = 50)
post = mudelid.CharField (max_pikkus = 40)
email = mudelid.EmailField ()
osakond = mudelid.CharField (max_pikkus = 30)
liitumise kuupäev = mudelid.Kuupäevaväli ()
Käivitage makemigratsioonid käsk luua uus ränne mudelite tehtud muudatuste põhjal.
$ python3 hallata.py makemigrations filterappKäivitage rändama käsk SQL-i käskude käivitamiseks ja kõigi andmebaasis määratletud tabelite loomiseks mudelid.py faili.
$ python3 hallata.py rännataMuutke sisu admin.py järgmise sisuga fail. Siin, töötaja mudelite klass on registreeritud register () meetod töötajate arvestus tabelid Django halduse juhtpaneelil.
admin.py
# Impordi administraatori moodulalates django.kaastöö impordi admin
# Töötaja mudeli importimine
alates .mudelid impordivad Töötaja
# Registreerige töötaja mudel
admin.sait.register (töötaja)
Django administraatori sisselogimislehe avamiseks käivitage järgmine URL. Andke avamiseks kehtiv kasutajanimi ja parool Django administratsiooni juhtpaneel andmebaasitabelitele juurdepääsuks.
Andmetele filtri rakendamiseks sisestage kaks või enam töötaja kirjet. Siia lisatakse viis kirjet.
Looge otsing.HTML faili sees filterapp / templates / kaust järgmise skriptiga. Andmed töötaja Selles mallifailis kuvatakse tabel. eest silmust kasutatakse objekti_loend muutuja, mis edastatakse vaatefailist. The nimi, postitus, ja osakond väärtused töötajad tabelit kuvatakse loendi abil.
otsing.HTML
Django filtri õpetus
Töötajate nimekiri
emp.nimi (emp.postitus)
emp.osakond osakond
% emp-i jaoks objekti_loendis%
% endfor%
Ava vaated.py fail failist filterapp kausta ja muutke faili sisu järgmise skriptiga. Mudeli ja malli nimed on määratletud skriptis.
vaated.py
# Import ListView moodulalates django.vaated.üldine import ListView
# Töötajate mooduli importimine
alates .mudelid impordivad Töötaja
# Impordi Q moodul
alates django.db.mudelid impordivad Q
# Määratlege andmete filtreerimise klass
klassi otsingutöötaja (ListView):
# Määratlege mudel
mudel = Töötaja
# Määra mall
malli_nimi = 'otsing.html '
Muutke sisu URL-id.py järgmise sisuga fail. Skriptis onsearchEmp'on määratletud tee kutsumiseks Töötaja otsimine.as_view () meetod, mis saadab kõik andmed ja filtreeritud andmed töötajad tabel malli faili.
URL-id.py
# Impordi administraatori moodulalates django.kaastöö impordi admin
# Impordi tee ja kaasake moodul
alates django.URL-ide importimise tee, kaasata
# Impordi SearchEmployee moodul
filtrirakendusest.vaated impordivad SearchEmployee
urlpatterns = [
# Määrake administraatori tee
tee ('admin /', admin.sait.URL-id),
# Määrake otsingu tee
tee ('searchEmp /', SearchEmployee.as_view ()),
]
Järgmine väljund ilmub ilma järgmise URL-i jaoks filtrit rakendamata.
http: // localhost: 8000 / SerachEmp
Andmete filtreerimine lihtsa filtreerimise abil
Lisage järgmise rea lõppu vaated.py faili, et filtreerida töötajad tabel, kus väärtus postitus väli on 'Raamatupidaja".
# Rakenda põhifiltritqueryset = Töötaja.objektid.filter (post = 'Raamatupidaja')
Pärast põhifiltreerimist rakendatakse järgmist väljundit.
Andmete filtreerimine mitme väljaga
Lisage järgmise rea lõppu vaated.py faili, et filtreerida töötajad tabel, kus väärtus osakond väli on 'HT"ja e-kiri väli on '[meiliga kaitstud]'.
# Rakenda filtreerimist mitme väljagaqueryset = Töötaja.objektid.filter (osakond = 'HR', e-post = '[meiliga kaitstud]')
Järgmine väljund ilmub pärast mitme filtreerimise rakendamist.
Andmete filtreerimine Q-objektiga
Lisage järgmise rea lõppu vaated.py faili, et filtreerida töötajad tabel, kus väärtus postitus väli on 'Juhataja"või väärtus osakond väli on 'Müük".
# Rakendage filtreerimine Q-objektide abilqueryset = Töötaja.objektid.filter (Q (post = 'Juht') | Q (osakond = 'Müük'))
Järgmine väljund ilmub pärast Q-objekti filtreerimise rakendamist.
Andmete filtreerimine filtreerimisahelate abil
Lisage järgmise rea lõppu vaated.py faili, et filtreerida töötajad tabel, kus väärtus osakond Kõigepealt kontrollitakse välja ja kui see vastab väärtusele true, siis väärtus nimi väli kontrollitakse.
# Rakendage filtreerimine aheldamise abilqueryset = Töötaja.objektid.filter (osakond = 'HR').filter (nimi = 'Mehrab Hossain')
Pärast filtreerimisahela rakendamist kuvatakse järgmine väljund.
Järeldus
Andmeid saab Djangos filtreerida mitmel viisil, lähtudes rakenduse nõuetest. Selles õpetuses selgitati nelja erinevat filtreerimisviisi, et mõista Django filtreerimise põhitõdesid. Need on lihtne filtreerimine, mitmekordne filtreerimine, Q-objektiga filtreerimine ja filtreerimine ahelasse.