Būtinos sąlygos
Prieš pradėdami praktikuoti šios mokymo programos pavyzdžius, turite atlikti šias užduotis:
- Įdiekite „Django“ versiją 3+ „Ubuntu 20+“ (geriausia)
- Sukurkite „Django“ projektą
- Paleiskite „Django“ serverį ir patikrinkite, ar serveris veikia tinkamai.
Nustatykite „Django“ programą
A. Norėdami sukurti „Django“ programą, paleiskite šią komandą filterapp.
$ python3 valdyti.py startapp filterappB. Vykdykite šią komandą, kad sukurtumėte vartotoją, kad pasiektumėte „Django“ duomenų bazę. Jei vartotoją sukūrėte anksčiau, komandos vykdyti nereikia.
$ python3 valdyti.py sukurianaudotojasC. Pridėkite programos pavadinimą INSTALLED_APP dalis py failą.
INSTALLED_APPS = […
„filterapp“
]
D. Sukurkite aplanką pavadinimu šablonai viduje filterapp aplanką ir nustatykite šablonai programos vieta Šablonai dalis py failą.
Šablonai = [… .
„DIRS“: ['/ home / fahmida / django_pro / filterapp / templates'],
… .
,
]
Sukurkite duomenų bazės lentelės modelį
Atidaryk modeliai.py failą iš filterapp aplanką ir pridėkite šį scenarijų, kad apibrėžtumėte darbuotojų stalai. Darbuotojas klasė yra apibrėžta norint sukurti lentelę pavadinimu darbuotojų su vardas, paštas, el. paštas, skyrius, ir įstojimo data laukai. Čia, vardas, pareigos, ir skyrius laukuose bus saugomi simbolių duomenys, paštas lauke bus išsaugotas el. pašto adresas ir įstojimo data lauke bus saugomi datos duomenys.
modeliai.py
# Importuoti modelių modulįnuo django.db importavimo modeliai
# Apibrėžkite klasę, kad sukurtumėte darbuotojų lentelę
klasės darbuotojas (modeliai.Modelis):
vardas = modeliai.„CharField“ (maks. Ilgis = 50)
post = modeliai.„CharField“ (maks. Ilgis = 40)
paštas = modeliai.„EmailField“ ()
skyrius = modeliai.„CharField“ (maks. Ilgis = 30)
prisijungimo data = modeliai.DataField ()
Paleiskite makemigracijos komandą sukurti naują perkėlimą, remiantis modelių atliktais pakeitimais.
$ python3 valdyti.py makemigrations filterappPaleiskite migruoti komandą vykdyti SQL komandas ir sukurti visas duomenų bazės lenteles, apibrėžtas modeliai.py failą.
$ python3 valdyti.py migruotiKeisti administratorius.py failą su tokiu turiniu. Čia, darbuotojas klasių modeliai registruojami naudojant registras () metodas rodyti darbuotojų įrašai lenteles Django administracijos informacijos suvestinėje.
administratorius.py
# Importuoti administratoriaus modulįnuo django.įnašo importo administratorius
# Importuoti darbuotojų modelį
nuo .modeliai importuoja Darbuotoją
# Užregistruokite darbuotojo modelį
administratorius.svetainėje.registruotis (darbuotojas)
Paleiskite šį URL, kad atidarytumėte „Django“ administratoriaus prisijungimo puslapį. Nurodykite galiojantį vartotojo vardą ir slaptažodį, kad atidarytumėte „Django“ administracijos informacijos suvestinė prieiti prie duomenų bazės lentelių.
Norėdami taikyti filtrą duomenims, įterpkite du ar daugiau darbuotojų įrašų. Čia įterpiami penki įrašai.
Sukurkite Paieška.HTML failą filterapp / templates / aplankas su tokiu scenarijumi. Duomenys iš darbuotojas lentelė bus rodoma šiame šablono faile. dėl ciklas naudojamas skaityti object_list kintamasis, kuris bus perduotas iš rodinio failo. The vardas, pareigos, ir skyrius vertės darbuotojų lentelė bus rodoma naudojant sąrašą.
Paieška.HTML
„Django“ filtro pamoka
Darbuotojų sąrašas
emp.vardas (emp.paskelbti)
emp.skyrius skyrius
% už „emp_“ objekto sąraše%
% endfor%
Atidaryk Peržiūrų.py failą iš filterapp aplanką ir pakeiskite failo turinį naudodami šį scenarijų. Modelių ir šablonų pavadinimai yra apibrėžti scenarijuje.
Peržiūrų.py
# Importuoti „ListView“ modulįnuo django.Peržiūrų.bendras importavimas „ListView“
# Importuoti darbuotojų modulį
nuo .modeliai importuoja Darbuotoją
# Importuoti Q modulį
nuo django.db.modeliai importuoja Q
# Apibrėžkite duomenų filtravimo klasę
klasės „SearchEmployee“ („ListView“):
# Apibrėžkite modelį
modelis = darbuotojas
# Apibrėžkite šabloną
template_name = 'paieška.HTML '
Keisti URL.py failą su tokiu turiniu. Scenarijuje „ieškotiEmp'kelias yra apibrėžtas, norint iškviesti „SearchEmployee“.as_view () metodas, kuris siųs visus duomenis ir filtruotus duomenis darbuotojų lentelę į šablono failą.
URL.py
# Importuoti administratoriaus modulįnuo django.įnašo importo administratorius
# Importo kelias ir modulis
nuo django.URL importavimo kelias, įtraukti
# Importuoti „SearchEmployee“ modulį
iš filterapp.peržiūros importuoja „SearchEmployee“
urlpatterns = [
# Apibrėžkite administratoriaus kelią
kelias ('admin /', admin.svetainėje.URL),
# Apibrėžkite paieškos kelią
kelias ('searchEmp /', SearchEmployee.as_view ()),
]
Ši išvestis bus rodoma netaikant jokio filtravimo šiam URL.
http: // localhost: 8000 / SerachEmp
Filtruoti duomenis pagal paprastą filtravimą
Pabaigoje pridėkite šią eilutę Peržiūrų.py failas, skirtas filtruoti darbuotojų lentelė, kurioje vertė paštu laukas yra 'Buhalterė".
# Taikykite pagrindinį filtravimąqueryset = Darbuotojas.objektai.filtras (įrašas = 'buhalteris')
Taikant pagrindinį filtravimą, pasirodys tokia išvestis.
Filtruokite duomenis su keliais laukais
Pabaigoje pridėkite šią eilutę Peržiūrų.py failas, skirtas filtruoti darbuotojų lentelė, kurioje vertė skyrius laukas yra 'HT"ir paštas laukas yra „[el. pašto saugoma]“.
# Taikykite filtravimą su keliais laukaisqueryset = Darbuotojas.objektai.filtras (skyrius = 'HR', el. paštas = '[el. paštas apsaugotas]')
Ši išvestis pasirodys pritaikius kelis filtrus.
Filtruokite duomenis naudodami Q objektą
Pabaigoje pridėkite šią eilutę Peržiūrų.py failas, skirtas filtruoti darbuotojų lentelė, kurioje vertė paštu laukas yra 'Vadybininkas"arba skyrius laukas yra 'Pardavimai".
# Taikykite filtravimą naudodami Q objektusqueryset = Darbuotojas.objektai.filtras (Q (post = 'Vadybininkas') | Q (skyrius = 'Pardavimai'))
Taikant Q objektų filtravimą, pasirodys ši išvestis.
Filtruokite duomenis naudodami filtro grandinę
Pabaigoje pridėkite šią eilutę Peržiūrų.py failas, skirtas filtruoti darbuotojų lentelė, kurioje vertė skyrius laukas bus patikrintas pirmiausia ir, jei jis bus teisingas, tada reikšmė vardas laukas bus patikrintas.
# Taikykite filtravimą grandinequeryset = Darbuotojas.objektai.filtras (skyrius = 'HR').filtras (vardas = 'Mehrabas Hossainas')
Taikant filtrų grandinę, pasirodys tokia išvestis.
Išvada
Duomenis galima filtruoti „Django“ įvairiais būdais, atsižvelgiant į programos reikalavimus. Šioje pamokoje buvo paaiškinti keturi skirtingi filtravimo būdai, siekiant suprasti Django filtravimo pagrindus. Tai yra paprastas filtravimas, daugkartinis filtravimas, filtravimas naudojant Q objektą ir filtrų grandinės.