Python

Kako filtrirati podatke v Django?

Kako filtrirati podatke v Django?
Zelo pogosta zahteva, da spletna aplikacija prikazuje podatke na spletni strani glede na uporabnikov interes. Zaradi funkcije iskanja je aplikacija prijaznejša do uporabnika.  Django framework ima vgrajeno filter () metoda za filtriranje podatkov iz tabel zbirke podatkov. Tabela lahko vsebuje veliko zapisov, včasih pa je treba na podlagi določenih meril določiti nekatere posebne podatke. Ta naloga postane lažja z uporabo filter () metoda na različne načine. V tej vadnici bomo razpravljali o tem, kako lahko podatke iz tabele zbirke podatkov filtriramo z metodo filtriranja na štiri različne načine.

Pogoji

Pred vadbo primerov te vaje morate opraviti naslednje naloge:

  1. Namestite različico Django 3+ na Ubuntu 20+ (po možnosti)
  2. Ustvarite projekt Django
  3. 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 filterapp

B. 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 uporabnika

C. 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 modula
iz 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 filterapp

Zaženite migrirati ukaz za izvajanje ukazov SQL in ustvarjanje vseh tabel v zbirki podatkov, ki so definirane v modelov.py mapa.

$ python3 upravljanje.py selijo

Spremenite 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 modul
iz 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

<br>Vadnica za filter Django<br>

Seznam zaposlenih



    % za emp v object_list%

  1. emp.ime (emp.objava)


    emp.oddelek oddelek



  2. % 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 ListView
iz 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 modul
iz 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 filtriranje
queryset = 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č polji
queryset = 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 Q
queryset = 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ženjem
queryset = 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.

Namestite najnovejšo strategijo igre OpenRA v Ubuntu Linux
OpenRA je Libre / Free Real Time strateški stroj, ki poustvarja zgodnje igre Westwood, kot je klasična Command & Conquer: Red Alert. Porazdeljeni modi...
Namestite najnovejši Dolphin Emulator za Gamecube & Wii v Linux
Dolphin Emulator vam omogoča igranje izbranih iger Gamecube in Wii na osebnih računalnikih Linux (PC). Dolphin Emulator je prosto dostopen in odprtok...
Kako uporabljati GameConqueror Cheat Engine v Linuxu
Članek zajema vodnik o uporabi varalnice GameConqueror v Linuxu. Številni uporabniki, ki igrajo igre v sistemu Windows, pogosto uporabljajo aplikacijo...