Django

Kako uporabljati queryset v django

Kako uporabljati queryset v django
Večina spletnih aplikacij se zdaj izvaja z bazo podatkov. queryset se uporablja v aplikaciji Django za pridobivanje zapisov s filtriranjem ali rezanjem ali urejanjem tabele zbirke podatkov brez spreminjanja prvotnih podatkov. Model je uporabil Django za ustvarjanje tabele v bazi podatkov. Znanje uporabe modela v Djangu je potrebno za razumevanje uporabe nabora poizvedb. Glavna funkcija nabora poizvedb je ponavljanje zapisov tabel baz podatkov s pretvorbo v poizvedbe SQL. Uporablja se lahko iz ukazne vrstice python ali s pisanjem skripta python za prikaz rezultatov brskalnika. V tej vadnici je pojasnjena uporaba nabora poizvedb za pridobivanje podatkov iz tabele zbirke podatkov na različne načine.

Pogoji:

Pred vadbo skripta te vaje morate opraviti naslednje naloge.

  1. Namestite različico Django 3+ na Ubuntu 20+ (po možnosti)
  2. Ustvarite projekt Django
  3. 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 queryapp

Zaž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 uporabnika

Dodajte 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 modula
iz 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 queryapp

Zaženite migrirati ukaz za izvajanje ukazov SQL in ustvarjanje vseh tabel v zbirki podatkov, ki so definirane v modelov.py mapa.

$ python3 upravljanje.py selijo

Spremenite 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 modul
iz 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



<br>Vadnica za Django QuerySet<br>



Iskanje izdelka



% csrf_token%
Išči izdelek:







% za izdelek na object_list%



% endfor%
IDImeBlagovna znamkaCena
izdelek.id izdelek.ime izdelek.blagovna znamkastyle = "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 ListView
iz 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 modul
iz 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.

Kako prikazati prekrivanje zaslonskega menija v celozaslonskih aplikacijah in igrah za Linux
Igranje celozaslonskih iger ali uporaba aplikacij v celozaslonskem načinu brez motenj vam lahko odreže ustrezne sistemske informacije, ki so vidne na ...
Top 5 kartic za zajemanje iger
Vsi smo v YouTubu videli in oboževali pretakanje iger. PewDiePie, Jakesepticye in Markiplier so le nekateri izmed najboljših igralcev, ki so zaslužili...
Kako razviti igro na Linuxu
Pred desetletjem le malo uporabnikov Linuxa napoveduje, da bo njihov najljubši operacijski sistem nekoč priljubljena igralna platforma za komercialne ...