Būtinos sąlygos:
Prieš praktikuodami šios mokymo programos scenarijų, 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ą:
Norėdami sukurti „Django“ programą, paleiskite šią komandą queryapp.
$ python3 valdyti.py startapp queryappVykdykite šią komandą, kad sukurtumėte vartotoją, kad pasiektumėte „Django“ duomenų bazę. Jei vartotoją sukūrėte anksčiau, komandos paleisti nereikia.
$ python3 valdyti.py sukurianaudotojasPridėkite programos pavadinimą INSTALLED_APP dalis parametrus.py failą.
INSTALLED_APPS = […
„queryapp“
]
Sukurkite aplanką pavadinimu šablonai viduje queryapp aplanką ir nustatykite šablonai programos vieta Šablonai dalis parametrus.py failą.
Šablonai = [… .
„DIRS“: ['/ home / fahmida / django_pro / queryapp / templates'],
… .
,
]
Sukurkite duomenų bazės lentelės modelį:
Atidaryk modeliai.py failą iš queryapp aplanką ir pridėkite šį scenarijų, kad apibrėžtumėte Produktai stalai. Produktas klasė yra apibrėžta norint sukurti lentelę pavadinimu Produktai su pavadinimas, tipas, prekės ženklas, ir kaina laukai. Čia, pavadinimas, tipas, ir prekės ženklą laukuose bus saugomi simbolių duomenys, o kaina lauke bus saugomi sveikojo skaičiaus duomenys.
modeliai.py
# Importuoti modelių modulįnuo django.db importavimo modeliai
# Apibrėžkite klasę, kad sukurtumėte produktų lentelę
klasės produktas (modeliai.Modelis):
vardas = modeliai.„CharField“ (maks. Ilgis = 100)
tipas = modeliai.„CharField“ (maks. Ilgis = 30)
prekės ženklas = modeliai.„CharField“ (maks. Ilgis = 50)
kaina = modeliai.„IntegerField“ ()
Paleiskite makemigracijos komandą sukurti naują perkėlimą, remiantis modelių atliktais pakeitimais.
$ python3 valdyti.py makemigrations queryappPaleiskite 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, modelių gaminių klasės yra užregistruotas naudojant Registruotis() metodas rodyti Produktai lenteles Django administracijos informacijos suvestinėje.
administratorius.py
# Importuoti administratoriaus modulįnuo django.įnašo importo administratorius
# Importuoti produkto modelį
nuo .modeliai importuoja Produktą
# Užregistruokite gaminio modelį
administratorius.svetainėje.registruotis (produktas)
Sukurkite šablono failą pavadinimu productList.HTML viduje queryapp / templates / su tokiu scenarijumi. Šiame scenarijuje bus rodomi visi Produktai lentelė lentelės forma su paieškos laukeliu. Vartotojas galės ieškoti konkrečių įrašų iš produktų lentelės naudodamasis paieškos forma. dėl ciklas naudojamas scenarijuje pakartoti iš Peržiūrų.py failą.
productList.HTML
„Django QuerySet“ pamoka
Ieškoma produkto
ID | vardas | Prekės ženklas | Kaina |
---|---|---|---|
produktas.id | produktas.vardas | produktas.prekės ženklas | style = "text-align: right"> $ produktas.kaina |
Keisti Peržiūrų.py failas su tokiu scenarijumi. Modelio ir šablonų pavadinimai yra apibrėžti „ProductList“ klasė. get_queryset () klasės metodas yra apibrėžtas scenarijuje, norint filtruoti duomenis pagal turinį, kurį pateikia šablono paieškos laukelis. Produktas.objektai.visi () metodas grąžina visus Produktai stalo. prašymą.GAUTI.raktai() metodas naudojamas scenarijuje patikrinti, ar visi duomenys pateikiami paieškos formoje. Jei šis metodas grįš tiesa, tada prašymą.GAUTI.gauti („src“) metodas naudojamas patikrinti, ar pateikta vertė tuščia. Jei šis metodas pateikia ne tuščią vertę, vertė bus saugoma kintamajame, raktinis žodis, ir jis bus naudojamas duomenims filtruoti remiantis prekės ženklą ir tipo laukai nuo Produktai stalo.
Peržiūrų.py
# Importuoti „ListView“ modulįnuo django.Peržiūrų.bendras importavimas „ListView“
# Importuoti gaminį
nuo .modeliai importuoja Produktą
# Importuoti Q modulį
nuo django.db.modeliai importuoja Q
# Apibrėžkite užklausų duomenų klasę
klasės „ProductList“ („ListView“):
# Apibrėžkite modelį
modelis = produktas
# Apibrėžkite šabloną
template_name = 'productList.HTML '
def get_queryset (savarankiškai):
# Nustatykite numatytąjį užklausų rinkinį
queryset = produktas.objektai.visi ()
# Patikrinkite, ar formos vertė pateikta, ar ne
jei pats.prašymą.GAUTI.raktai():
# Patikrinkite paieškos raktinį žodį
jei pats.prašymą.GAUTI.gauti („src“) != ":
keyword = self.prašymą.GAUTI.gauti ('src')
# Nustatykite užklausų rinkinį pagal paieškos raktinį žodį
queryset = produktas.objektai.filtras (Q (prekės ženklas = raktinis žodis.rašyti didžiosiomis raidėmis ()) | Q (tipas = raktinis žodis.rašyti didžiosiomis raidėmis ()))
grįžimo užklausa
Keisti URL.py failas su tokiu scenarijumi. Scenarijuje „searchPro/ 'kelias yra apibrėžtas, norint iškviesti „ProductList“.as_view () metodas, kuris siųs visus duomenis ir filtruotus duomenis Produktai lentelę į šablono failą.
URL.py
# Importuoti administratoriaus modulįnuo django.įnašo importo administratorius
# Importo kelias ir modulis
nuo django.URL importavimo kelias
# Importuoti „SearchEmployee“ modulį
iš queryapp.peržiūros importuoja „ProductList“
urlpatterns = [
# Apibrėžkite administratoriaus kelią
kelias ('admin /', admin.svetainėje.URL),
# Apibrėžkite paieškos produkto kelią
kelias ('searchPro /', ProductList.as_view ()),
Įtraukite įrašus į lentelę:
Atidarykite „Django Administration“ puslapį ir pridėkite keletą įrašų į Produktai lentelę, kad tada pritaikytumėte užklausų rinkinį. Čia buvo įterpti penki įrašai.
Visi produktų įrašai su paieškos laukeliu bus rodomi naršyklėje atlikus šį URL.
http: // localhost: 8000 / searchPro
Visi šampūno produktai, rodomi, jei produkto tipas “šampūnas'bus ieškoma paieškos laukelyje.
Pieno miltelių produktai iš šviežias prekės ženklas bus rodomas, jei prekės ženklas "šviežias'bus ieškoma paieškos laukelyje.
Išvada:
Šiame vadovėlyje paaiškintas paprastos duomenų bazės lentelės duomenų filtravimo būdas naudojant užklausos rinkinį. Duomenis galima filtruoti įvairiai. Skaitydami šią pamoką, skaitytojai supras, kaip naudoti užklausos rinkinį duomenims filtruoti ar ieškoti naršyklėje.