Predpoklady
Pred precvičením príkladov tohto tutoriálu musíte splniť nasledujúce úlohy:
- Nainštalujte si Django verzie 3+ na Ubuntu 20+ (najlepšie)
- Vytvorte projekt Django
- Spustením servera Django skontrolujte, či server funguje správne alebo nie.
Nainštalujte si aplikáciu Django
A. Spustením nasledujúceho príkazu vytvorte aplikáciu Django s názvom filterapp.
$ python3 spravovať.py startapp filterappB. Spustením nasledujúceho príkazu vytvorte používateľa pre prístup k databáze Django. Ak ste používateľa vytvorili už predtým, nemusíte tento príkaz spúšťať.
$ python3 spravovať.py vytvorí superužívateľaC. Pridajte názov aplikácie do priečinka INSTALLED_APP časť py spis.
INSTALLED_APPS = […
'filterapp'
]
D. Vytvorte priečinok s názvom šablóny vnútri filterapp priečinok a nastavte šablóny umiestnenie aplikácie v ŠABLÓNY časť py spis.
TEMPLATES = [… .
'DIRS': ['/ home / fahmida / django_pro / filterapp / templates'],
… .
,
]
Vytvorte model pre databázovú tabuľku
Otvor modely.py súbor z filterapp priečinok a pridajte nasledujúci skript, ktorý definuje štruktúru priečinka zamestnancov stoly. Zamestnanec triedy je definované na vytvorenie tabuľky s názvom zamestnancov s meno, pošta, e-mail, oddelenie, a dátum pripojenia polia. Tu, meno, príspevok, a oddelenie polia budú ukladať znakové údaje, e-mail do poľa sa uloží e-mailová adresa a dátum pripojenia pole uloží údaje o dátume.
modely.py
# Modul importu modelovod djanga.db import modely
# Definujte triedu na vytvorenie tabuľky zamestnancov
trieda Zamestnanec (modely.Model):
meno = modely.CharField (max_length = 50)
post = modely.CharField (max_length = 40)
email = modely.EmailField ()
oddelenie = modely.CharField (max_length = 30)
joinning_date = modely.DateField ()
Spustiť makemigrácie príkaz na vytvorenie novej migrácie na základe zmien vykonaných modelmi.
$ python3 spravovať.py makemigrations filterappSpustiť migrovať príkaz na vykonanie príkazov SQL a vytvorenie všetkých tabuliek v databáze, ktoré sú definované v modely.py spis.
$ python3 spravovať.py migrovaťUpraviť obsah admin.py súbor s nasledujúcim obsahom. Tu, zamestnanec trieda modelov je registrovaná pomocou register () metóda zobrazenia evidencia zamestnancov tabuľky na administračnom paneli Django.
admin.py
# Importovať modul správcuod djanga.sk prispieť import
# Importovať model zamestnanca
od .modely importovať zamestnanec
# Zaregistrujte model zamestnanca
admin.stránky.registrovať sa (zamestnanec)
Spustením nasledujúcej adresy URL otvorte prihlasovaciu stránku správcu Django. Zadajte platné používateľské meno a heslo na otvorenie Panel správy Django pre prístup k databázovým tabuľkám.
Vložte dva alebo viac záznamov o zamestnancoch, aby sa filter použil na údaje. Tu je vložených päť záznamov.
Vytvorte Vyhľadávanie.html súbor vo vnútri filterapp / šablóny / priečinok s nasledujúcim skriptom. Údaje z zamestnanec tabuľka sa zobrazí v tomto súbore šablón. pre slučka slúži na čítanie obsahu súboru zoznam_objektov premenná, ktorá sa odovzdá zo súboru zobrazenia. The meno, príspevok, a oddelenie hodnoty zamestnancov tabuľka sa zobrazí pomocou zoznamu.
Vyhľadávanie.html
Výukový program pre filter Django
Zoznam zamestnancov
emp.názov (emp.príspevok)
emp.oddelenie oddelenie
% pre emp v zozname_objektov%
% endfor%
Otvor názory.py súbor z filterapp priečinok a upravte obsah súboru pomocou nasledujúceho skriptu. Názvy modelov a šablón sú definované v skripte.
názory.py
# Importovať modul ListViewod djanga.názory.všeobecný import ListView
# Importovať modul zamestnancov
od .modely importovať zamestnanec
# Import Q modulu
od djanga.db.modely importovať Q
# Definujte triedu pre filtrovanie údajov
trieda SearchEmployee (ListView):
# Definujte model
model = zamestnanec
# Definujte šablónu
template_name = 'hľadať.html '
Upraviť obsah adresy URL.py súbor s nasledujúcim obsahom. V scenári sasearchEmp"cesta je definovaná na volanie Zamestnanec vo Vyhľadávaní.as_view () metóda, ktorá odošle všetky údaje a filtrované údaje z zamestnancov tabuľku do súboru šablóny.
adresy URL.py
# Importovať modul správcuod djanga.sk prispieť import
# Importovať cestu a zahrnúť modul
od djanga.cesta importu adries URL, zahrnúť
# Importovať modul SearchEmployee
z filterapp.pohľady importovať SearchEmployee
urlpatterns = [
# Definujte cestu pre administrátora
cesta ('admin /', admin.stránky.adresy URL),
# Definujte cestu pre vyhľadávanie
cesta ('searchEmp /', SearchEmployee.as_view ()),
]
Nasledujúci výstup sa zobrazí bez použitia filtrovania pre nasledujúcu adresu URL.
http: // localhost: 8000 / SerachEmp
Filtrovanie údajov jednoduchým filtrovaním
Pridajte nasledujúci riadok na koniec súboru názory.py súbor na filtrovanie záznamov zamestnancov tabuľka, kde je hodnota príspevok pole jeÚčtovník„.
# Použiť základné filtrovaniequeryset = Zamestnanec.predmety.filter (príspevok = 'Účtovník')
Po použití základného filtrovania sa zobrazí nasledujúci výstup.
Filtrovanie údajov pomocou viacerých polí
Pridajte nasledujúci riadok na koniec súboru názory.py súbor na filtrovanie záznamov zamestnancov tabuľka, kde je hodnota oddelenie pole jeHT„a e-mail pole je „[chránený e-mailom]“.
# Použiť filtrovanie s viacerými poľamiqueryset = Zamestnanec.predmety.filter (department = 'HR', email = '[email protected]')
Po použití viacnásobného filtrovania sa objaví nasledujúci výstup.
Filtrovanie údajov pomocou Q Object
Pridajte nasledujúci riadok na koniec súboru názory.py súbor na filtrovanie záznamov zamestnancov tabuľka, kde je hodnota príspevok pole jeManažér"alebo hodnota oddelenie pole jePredaj„.
# Použite filtrovanie pomocou Q objektovqueryset = Zamestnanec.predmety.filter (Q (post = 'Manager') | Q (department = 'Sales')))
Po použití filtrovania objektov Q sa objaví nasledujúci výstup.
Filtrujte údaje pomocou reťazenia filtra
Pridajte nasledujúci riadok na koniec súboru názory.py súbor na filtrovanie záznamov zamestnancov tabuľka, kde je hodnota oddelenie pole sa skontroluje ako prvé a ak vráti hodnotu true, potom hodnota názov pole bude zaškrtnuté.
# Použite filtrovanie reťazenímqueryset = Zamestnanec.predmety.filter (oddelenie = 'HR').filter (meno = 'Mehrab Hossain')
Po použití reťazenia filtra sa objaví nasledujúci výstup.
Záver
Dáta je možné v Djangu filtrovať mnohými spôsobmi na základe požiadaviek aplikácie. V tomto výučbe sme vysvetlili štyri rôzne spôsoby filtrovania, aby ste pochopili základy filtrovania Django. Jedná sa o jednoduché filtrovanie, viacnásobné filtrovanie, filtrovanie pomocou objektu Q a filtrovanie reťazcov.