Pogoji:
Pred vadbo skripta te vaje morate opraviti naslednje naloge.
- Namestite različico Django 3+ na Ubuntu 20+ (po možnosti)
- Ustvarite projekt Django
- Zaženite strežnik Django, da preverite, ali strežnik deluje pravilno ali ne.
Nastavite aplikacijo Django:
Zaženite naslednji ukaz, da ustvarite aplikacijo Django z imenom queryapp.
$ python3 upravljanje.py startapp queryappZaženite naslednji ukaz, da ustvarite uporabnika za dostop do baze podatkov Django. Če ste uporabnika že ustvarili, ukaza ni treba zagnati.
$ python3 upravljanje.py ustvarja uporabnikaDodajte ime aplikacije v INSTALLED_APP del nastavitve.py mapa.
INSTALLED_APPS = [..
'queryapp'
]
Ustvarite mapo z imenom predloge znotraj queryapp mapo in nastavite predloge lokacijo aplikacije v PREDLOGE del nastavitve.py mapa.
PREDLOGE = [.. .
'DIRS': ['/ home / fahmida / django_pro / queryapp / predloge'],
.. .
,
]
Ustvarite model za tabelo baze podatkov:
Odprite modelov.py datoteko iz queryapp mapo in dodajte naslednji skript, da določite strukturo izdelkov mize. Izdelka razred je definiran za ustvarjanje tabele z imenom izdelkov s ime, vrsta, blagovna znamka, in cena polja. Tukaj, ime, tip, in blagovno znamko polja bodo shranila podatke o znakih, in cena polje shrani celoštevilske podatke.
modelov.py
# Uvoz modelov modulaiz djanga.db modeli uvoza
# Določite razred za ustvarjanje tabele izdelkov
razred Izdelek (modeli.Model):
ime = modeli.CharField (max_length = 100)
type = modeli.CharField (max_length = 30)
znamka = modeli.CharField (največja_dolžina = 50)
cena = modeli.IntegerField ()
Zaženite makemigracije ukaz za ustvarjanje nove selitve na podlagi sprememb, ki so jih naredili modeli.
$ python3 upravljanje.py makemigrations queryappZaženite migrirati ukaz za izvajanje ukazov SQL in ustvarjanje vseh tabel v zbirki podatkov, ki so definirane v modelov.py mapa.
$ python3 upravljanje.py selijoSpremenite vsebino skrbnik.py datoteko z naslednjo vsebino. Tukaj, modeli "Razred izdelkovs je registriran z uporabo register () za prikaz izdelkov tabele na nadzorni plošči uprave Django.
skrbnik.py
# Uvozi skrbniški moduliz djanga.prispevaj uvoz admin
# Uvozi model izdelka
iz .modeli uvozijo izdelek
# Registrirajte model izdelka
skrbnik.spletnem mestu.register (izdelek)
Ustvarite datoteko predloge z imenom productList.html znotraj queryapp / predloge / z naslednjim skriptom. Ta skript bo prikazal vse podatke izdelkov tabela v obliki tabele z iskalnim poljem. Uporabnik bo lahko iskal določene zapise v tabeli izdelkov z uporabo obrazca za iskanje. za zanka se v skriptu uporablja za ponovitev podatkov, posredovanih iz pogledi.py mapa.
productList.html
Vadnica za Django QuerySet
Iskanje izdelka
ID | Ime | Blagovna znamka | Cena |
---|---|---|---|
izdelek.id | izdelek.ime | izdelek.blagovna znamka | style = "text-align: right"> $ izdelek.cena |
Spremenite vsebino pogledi.py datoteko z naslednjim skriptom. Imena modelov in predlog so določena v ProductList razred. get_queryset () metoda razreda je definirana v skriptu za filtriranje podatkov na podlagi vsebine, ki jo predloži iskalno polje predloge. Izdelka.predmetov.vse () vrne vse zapise datoteke izdelkov tabela. prošnja.GET.tipke () metoda se v skriptu uporablja za preverjanje podatkov, ki jih predloži iskalni obrazec. Če se ta metoda vrne prav, potem prošnja.GET.get ('src') metoda se uporablja za preverjanje, ali je poslana vrednost prazna ali ne. Če ta metoda vrne prazno vrednost, bo vrednost shranjena v spremenljivki, ključna beseda, in bo uporabljen za filtriranje podatkov na podlagi blagovno znamko in tip polja iz izdelkov tabela.
pogledi.py
# Uvozi modul ListViewiz djanga.pogledi.generični uvoz ListView
# Uvozi modul izdelka
iz .modeli uvozijo izdelek
# Uvozi Q modul
iz djanga.db.modeli uvoz Q
# Določite razred za poizvedovanje po podatkih
class ProductList (ListView):
# Določite model
model = izdelek
# Določite predlogo
template_name = 'productList.html '
def get_queryset (self):
# Nastavite privzeti nabor poizvedb
queryset = izdelek.predmetov.vse ()
# Preverite, ali je vrednost obrazca poslana ali ne
če jaz.prošnja.GET.tipke ():
# Preverite ključno besedo za iskanje
če jaz.prošnja.GET.get ('src') != ":
ključna beseda = samo.prošnja.GET.get ('src')
# Nastavite nabor poizvedb glede na ključno besedo za iskanje
queryset = izdelek.predmetov.filter (Q (blagovna znamka = ključna beseda.uporaba velikih začetnic ()) | Q (type = ključna beseda.uporaba velikih začetnic ()))
vrni nabor poizvedb
Spremenite vsebino URL-ji.py datoteko z naslednjim skriptom. V skriptu jesearchPro/ 'pot je definirana za klic ProductList.as_view () metoda, ki bo poslala vse podatke in filtrirane podatke izdelkov tabelo v datoteko predloge.
URL-ji.py
# Uvozi skrbniški moduliz djanga.prispevaj uvoz admin
# Uvozi pot in vključi modul
iz djanga.pot za uvoz URL-jev
# Uvozi modul SearchE Employee
iz queryappa.ogledov uvoz ProductList
urlpatterns = [
# Določite pot za skrbnika
pot ('admin /', admin.spletnem mestu.urls),
# Določite pot do izdelka za iskanje
path ('searchPro /', ProductList.as_view ()),
V tabelo dodajte zapise:
Odprite stran za upravljanje Django in dodajte nekaj zapisov v izdelkov tabelo, na katero želite uporabiti niz poizvedb. Tu je vstavljenih pet zapisov.
Vsi zapisi izdelkov z iskalnim poljem bodo prikazani v brskalniku po izvedbi naslednjega URL-ja.
http: // localhost: 8000 / searchPro
Vsi šamponski izdelki, prikazani, če je vrsta izdelka, 'šampon'bo iskal v iskalnem polju.
Izdelki iz mleka v prahu iz Sveže blagovna znamka bo prikazana, če blagovna znamka izdelka, 'sveže'bo iskal v iskalnem polju.
Zaključek:
V tej vadnici je razložen način filtriranja podatkov preproste tabele zbirke podatkov z uporabo poizvedbe. Podatke lahko filtriramo na različne načine. Bralci bodo razumeli uporabo nabora poizvedb za filtriranje ali iskanje podatkov v brskalniku po branju te vadnice.