Forudsætninger:
Før du træner scriptet til denne vejledning, skal du udføre følgende opgaver.
- Installer Django version 3+ på Ubuntu 20+ (helst)
- Opret et Django-projekt
- Kør Django-serveren for at kontrollere, at serveren fungerer korrekt eller ej.
Konfigurer en Django-app:
Kør følgende kommando for at oprette en Django-app med navnet queryapp.
$ python3 administrere.py startapp queryappKør følgende kommando for at oprette brugeren til adgang til Django-databasen. Hvis du har oprettet brugeren før, behøver du ikke køre kommandoen.
$ python3 administrere.py skaberbrugerTilføj appnavnet i INSTALLERET_APP en del af indstillinger.py fil.
INSTALLED_APPS = [..
'queryapp'
]
Opret en mappe med navnet skabeloner inde i queryapp mappe og indstil skabeloner placering af appen i MALLER en del af indstillinger.py fil.
MALLER = [.. .
'DIRS': ['/ home / fahmida / django_pro / queryapp / templates'],
.. .
,
]
Opret en model til databasetabellen:
Åbn modeller.py fil fra queryapp mappen og tilføj følgende script for at definere strukturen af Produkter tabeller. Produkt klasse er defineret til at oprette en tabel med navnet Produkter med navn, type, brand, og pris felter. Her, navn, type, og mærke felter gemmer karakterdata og pris felt gemmer heltalsdataene.
modeller.py
# Importmodulmodulfra django.db import modeller
# Definer klasse for at oprette produkttabel
klasse Produkt (modeller.Model):
navn = modeller.CharField (max_length = 100)
type = modeller.CharField (max_length = 30)
brand = modeller.CharField (max_length = 50)
pris = modeller.IntegerField ()
Kør makemigrationer kommando til at oprette en ny migration baseret på ændringer foretaget af modellerne.
$ python3 administrere.py makemigrations queryappKør migrere kommando til at udføre SQL-kommandoer og oprette alle tabeller i databasen, der er defineret i modeller.py fil.
$ python3 administrere.py migrereRediger indholdet af admin.py fil med følgende indhold. Her, modellernes produktklassers registreres ved hjælp af Tilmeld() metode til at vise Produkter tabeller i Django-administrationens dashboard.
admin.py
# Importér admin-modulfra django.import importadministrator
# Importer produktmodel
fra .modeller importerer produkt
# Registrer produktmodel
admin.websted.register (Produkt)
Opret en skabelonfil med navnet produktliste.html inde i queryapp / skabeloner / med følgende script. Dette script viser alle data fra Produkter tabel i tabelform med et søgefelt. Brugeren vil være i stand til at søge i de bestemte poster fra produkttabellen ved hjælp af søgeformularen. til loop bruges i scriptet til at gentage de data, der er sendt fra synspunkter.py fil.
productList.html
Django QuerySet-vejledning
Søgning efter produkt
ID | Navn | Mærke | Pris |
---|---|---|---|
produkt.id | produkt.navn | produkt.brand | style = "text-align: right"> $ produkt.pris |
Rediger indholdet af synspunkter.py fil med følgende script. Model- og skabelonnavne er defineret i Produktliste klasse. get_queryset () metode til klassen er defineret i scriptet for at filtrere dataene baseret på det indhold, der indsendes af søgefeltet i skabelonen. Produkt.genstande.alle() metoden returnerer alle poster af Produkter bord. anmodning.FÅ.nøgler () metode bruges i scriptet til at kontrollere, om data indsendes af søgeformularen. Hvis denne metode vender tilbage rigtigt, derefter anmodning.FÅ.få ('src') metoden bruges til at kontrollere den indsendte værdi er tom eller ej. Hvis denne metode returnerer en ikke-tom værdi, gemmes værdien i variablen, nøgleord, og det vil blive brugt til at filtrere data baseret på mærke og type felter fra Produkter bord.
synspunkter.py
# Import ListView-modulfra django.synspunkter.generisk import ListView
# Importer produktmodul
fra .modeller importerer produkt
# Importer Q-modul
fra django.db.modeller importerer Q
# Definer klasse til forespørgselsdata
klasse ProductList (ListView):
# Definer model
model = Produkt
# Definer skabelon
template_name = 'productList.html '
def get_queryset (selv):
# Indstil standardforespørgselssættet
queryset = Produkt.genstande.alle()
# Kontroller, at formularværdien er indsendt eller ej
hvis selv.anmodning.FÅ.nøgler ():
# Kontroller søgeordet
hvis selv.anmodning.FÅ.få ('src') != ":
nøgleord = selv.anmodning.FÅ.få ('src')
# Indstil forespørgselssættet baseret på søgeord
queryset = Produkt.genstande.filter (Q (mærke = nøgleord.kapitaliser ()) Q (type = nøgleord.kapitaliser ())
returner forespørgselssæt
Rediger indholdet af webadresser.py fil med følgende script. I manuskriptet står 'searchPro/ 'sti er defineret til at kalde Produktliste.som_visning () metode, der sender alle data og de filtrerede data fra Produkter tabel til skabelonfilen.
webadresser.py
# Importér admin-modulfra django.import importadministrator
# Importer sti og inkluder modul
fra django.webadresser til import af sti
# Importer søgemodulmodul
fra queryapp.visninger importerer ProductList
urlmønstre = [
# Definer stien til admin
sti ('admin /', admin.websted.webadresser),
# Definer stien til søgeprodukt
sti ('searchPro /', ProductList.som_visning ()),
Tilføj poster i tabellen:
Åbn siden Django Administration, og tilføj nogle poster til Produkter tabel for at anvende forespørgselssættet på det tidspunkt. Her er fem poster indsat.
Alle registreringer af produkterne med søgefeltet vises i browseren efter udførelse af følgende URL.
http: // localhost: 8000 / searchPro
Alle shampooprodukter, der vises, hvis produkttypen, 'shampoovil blive søgt i søgefeltet.
Mælkepulverprodukterne fra den friske mærke vises, hvis produktmærket, 'friskvil blive søgt i søgefeltet.
Konklusion:
Måden at filtrere dataene i en simpel databasetabel ved hjælp af queryset er forklaret i denne vejledning. Dataene kan filtreres på forskellige måder. Læserne forstår at bruge et forespørgsel til at filtrere eller søge i data i browseren efter at have læst denne vejledning.