„Python“

Kaip filtruoti duomenis Django?

Kaip filtruoti duomenis Django?
Tai yra labai paplitęs reikalavimas, kad žiniatinklio programa rodytų duomenis tinklalapyje, atsižvelgdama į vartotojo susidomėjimą. Paieškos programos funkcija daro ją patogesnę vartotojui.  „Django“ karkasas turi įmontuotą filtras() metodas filtruoti duomenis iš duomenų bazės lentelių. Lentelėje gali būti daug įrašų, todėl kartais reikia nustatyti tam tikrus duomenis, atsižvelgiant į konkrečius kriterijus. Ši užduotis tampa lengviau naudojant filtras () metodas įvairiais būdais. Kaip bus filtruojami duomenys iš duomenų bazės lentelės naudojant filtravimo metodą keturiais skirtingais būdais, bus aptarta šioje pamokoje.

Būtinos sąlygos

Prieš pradėdami praktikuoti šios mokymo programos pavyzdžius, turite atlikti šias užduotis:

  1. Įdiekite „Django“ versiją 3+ „Ubuntu 20+“ (geriausia)
  2. Sukurkite „Django“ projektą
  3. 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 filterapp

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

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

Paleiskite migruoti komandą vykdyti SQL komandas ir sukurti visas duomenų bazės lenteles, apibrėžtas modeliai.py failą.

$ python3 valdyti.py migruoti

Keisti 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

<br>„Django“ filtro pamoka<br>

Darbuotojų sąrašas



    % už „emp_“ objekto sąraše%

  1. emp.vardas (emp.paskelbti)


    emp.skyrius skyrius



  2. % 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 laukais
queryset = 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 objektus
queryset = 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ą grandine
queryset = 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.

„Microsoft Sculpt Touch“ belaidžio pelės apžvalga
Neseniai skaičiau apie „Microsoft Sculpt Touch“ belaidę pelę ir nusprendė ją nusipirkti. Kurį laiką naudojęs, nusprendžiau pasidalinti savo patirtimi....
„AppyMouse“ ekrano „Trackpad“ ir pelės žymeklis, skirtas „Windows“ tabletėms
Planšetinių kompiuterių vartotojai dažnai praleidžia pelės žymeklį, ypač kai įprasta naudoti nešiojamus kompiuterius. Jutiklinio ekrano išmanieji tele...
Vidutinis pelės mygtukas neveikia sistemoje „Windows 10“
The vidurinis pelės mygtukas padeda naršyti ilgus tinklalapius ir ekranus, kuriuose yra daug duomenų. Jei tai sustos, gerai, jūs naudosite klaviatūrą ...