Pogoji
Pred vadbo primerov te vaje morate opraviti naslednje naloge:
- Namestite različico Django 3+ na Ubuntu 20+ (po možnosti)
- Ustvarite projekt Django
- Zaženite strežnik Django, da preverite, ali strežnik deluje pravilno ali ne.
Nastavite aplikacijo Django
A. Zaženite naslednji ukaz, da ustvarite aplikacijo Django z imenom filterapp.
$ python3 upravljanje.py startapp filterappB. Zaženite naslednji ukaz, da ustvarite uporabnika za dostop do baze podatkov Django. Če ste uporabnika ustvarili že prej, vam ni treba zagnati ukaza.
$ python3 upravljanje.py ustvarja uporabnikaC. Dodajte ime aplikacije v INSTALLED_APP del py mapa.
INSTALLED_APPS = [..
'filterapp'
]
D. Ustvarite mapo z imenom predloge znotraj filterapp mapo in nastavite predloge lokacijo aplikacije v PREDLOGE del py mapa.
PREDLOGE = [.. .
'DIRS': ['/ home / fahmida / django_pro / filterapp / templates'],
.. .
,
]
Ustvarite model za tabelo zbirke podatkov
Odprite modelov.py datoteko iz filterapp mapo in dodajte naslednji skript, da določite strukturo zaposlenih mize. Zaposleni razred je definiran za ustvarjanje tabele z imenom zaposlenih s ime, pošta, e-pošta, oddelek, in pridružilni_datum polja. Tukaj, ime, delovno mesto, in oddelek polja bodo shranila podatke o znakih, E-naslov polje bo shranilo e-poštni naslov in pridružilni_datum polje shrani podatke o datumu.
modelov.py
# Uvoz modelov modulaiz djanga.db modeli uvoza
# Določite razred za ustvarjanje tabele zaposlenih
razred Zaposleni (modeli.Model):
ime = modeli.CharField (največja_dolžina = 50)
post = modeli.CharField (max_length = 40)
email = modeli.EmailField ()
oddelek = modeli.CharField (max_length = 30)
joinning_date = modeli.DateField ()
Zaženite makemigracije ukaz za ustvarjanje nove selitve na podlagi sprememb, ki so jih naredili modeli.
$ python3 upravljanje.py makemigrations filterappZaženite migrirati ukaz za izvajanje ukazov SQL in ustvarjanje vseh tabel v zbirki podatkov, ki so definirane v modelov.py mapa.
$ python3 upravljanje.py selijoSpremenite vsebino skrbnik.py datoteko z naslednjo vsebino. Tukaj, zaposleni razred modelov je registriran z uporabo register () za prikaz evidenca zaposlenih tabele na nadzorni plošči uprave Django.
skrbnik.py
# Uvozi skrbniški moduliz djanga.prispevaj uvoz admin
# Uvozi model zaposlenega
iz .modeli uvoz zaposleni
# Registrirajte model zaposlenega
skrbnik.spletnem mestu.register (zaposleni)
Zaženite naslednji URL, da odprete stran za prijavo skrbnika Django. Vnesite veljavno uporabniško ime in geslo za odpiranje Nadzorna plošča uprave Django za dostop do tabel baze podatkov.
Vstavite dva ali več zapisov zaposlenih, da uporabite filter za podatke. Tu je vstavljenih pet zapisov.
Ustvari Iskanje.html v datoteki filterapp / predloge / mapo z naslednjim skriptom. Podatki iz zaposleni tabela bo prikazana v tej datoteki predloge. za zanka se uporablja za branje vsebine datoteke seznam_predmetov spremenljivka, ki bo posredovana iz datoteke pogleda. The ime, delovno mesto, in oddelek vrednosti zaposlenih tabela bo prikazana s pomočjo seznama.
Iskanje.html
Vadnica za filter Django
Seznam zaposlenih
emp.ime (emp.objava)
emp.oddelek oddelek
% za emp v object_list%
% endfor%
Odprite pogledi.py datoteko iz filterapp mapo in spremenite vsebino datoteke z naslednjim skriptom. Imena modelov in predlog so določena v skriptu.
pogledi.py
# Uvozi modul ListViewiz djanga.pogledi.generični uvoz ListView
# Uvozi modul zaposlenega
iz .modeli uvoz zaposleni
# Uvozi Q modul
iz djanga.db.modeli uvoz Q
# Določite razred za filtriranje podatkov
razred SearchE Employee (ListView):
# Določite model
model = Zaposleni
# Določite predlogo
template_name = 'iskanje.html '
Spremenite vsebino URL-ji.py datoteko z naslednjo vsebino. V skriptu jesearchEmp'pot je definirana za klic Iskanjezaposleni.as_view () metoda, ki bo poslala vse podatke in filtrirane podatke zaposlenih tabelo v datoteko predloge.
URL-ji.py
# Uvozi skrbniški moduliz djanga.prispevaj uvoz admin
# Uvozi pot in vključi modul
iz djanga.pot za uvoz URL-jev, vključi
# Uvozi modul SearchE Employee
iz filterapp.pogledov uvozi
urlpatterns = [
# Določite pot za skrbnika
pot ('admin /', admin.spletnem mestu.urls),
# Določite pot za iskanje
path ('searchEmp /', SearchE Employee.as_view ()),
]
Naslednji izhod se bo prikazal brez uporabe filtriranja za naslednji URL.
http: // localhost: 8000 / SerachEmp
Filtriranje podatkov s preprostim filtriranjem
Na koncu vrstice dodajte naslednjo vrstico pogledi.py datoteko za filtriranje zapisov zaposlenih tabela, kjer je vrednost objava polje je 'Računovodja".
# Uporabi osnovno filtriranjequeryset = Zaposleni.predmetov.filter (post = 'Računovodja')
Po uporabi osnovnega filtriranja se prikaže naslednji izhod.
Filtriraj podatke z več polji
Na koncu vrstice dodajte naslednjo vrstico pogledi.py datoteko za filtriranje zapisov zaposlenih tabela, kjer je vrednost oddelek polje je 'HT'in e-pošta polje je '[e-pošta zaščitena]'.
# Uporabi filtriranje z več poljiqueryset = Zaposleni.predmetov.filter (oddelek = 'HR', email = '[email protected]')
Naslednji izhod se bo prikazal po uporabi večkratnega filtriranja.
Filtriraj podatke s predmetom Q
Na koncu vrstice dodajte naslednjo vrstico pogledi.py datoteko za filtriranje zapisov zaposlenih tabela, kjer je vrednost objava polje je 'Manager"ali vrednost oddelek polje je 'Prodaja".
# Uporabite filtriranje z uporabo objektov Qqueryset = Zaposleni.predmetov.filter (Q (post = 'Manager') | Q (oddelek = 'Prodaja'))
Po uporabi filtriranja objektov Q se prikaže naslednji izhod.
Filtrirajte podatke z uporabo verige filtrov
Na koncu vrstice dodajte naslednjo vrstico pogledi.py datoteko za filtriranje zapisov zaposlenih tabela, kjer je vrednost oddelek polje bo najprej preverjeno in če vrne true, bo vrednost polja ime polje bo preverjeno.
# Uporabite filtriranje z veriženjemqueryset = Zaposleni.predmetov.filter (oddelek = 'HR').filter (name = 'Mehrab Hossain')
Po uporabi verige filtrov se prikaže naslednji izhod.
Zaključek
Podatke je mogoče v Djangu filtrirati na več načinov glede na zahteve aplikacije. V tej vadnici so bili razloženi štirje različni načini filtriranja, da bi razumeli osnove Django filtriranja. To so preprosto filtriranje, večkratno filtriranje, filtriranje s predmetom Q in veriženje filtrov.