Forutsetninger:
Før du trener på skriptet i denne opplæringen, må du fullføre følgende oppgaver.
- Installer Django versjon 3+ på Ubuntu 20+ (helst)
- Lag et Django-prosjekt
- Kjør Django-serveren for å kontrollere at serveren fungerer som den skal eller ikke.
Konfigurer en Django-app:
Kjør følgende kommando for å opprette en Django-app med navnet queryapp.
$ python3 administrere.py startapp queryappKjør følgende kommando for å opprette brukeren for tilgang til Django-databasen. Hvis du har opprettet brukeren før, trenger du ikke å kjøre kommandoen.
$ python3 administrere.py skaperbrukerLegg til appnavnet i INSTALLERT_APP del av innstillinger.py fil.
INSTALLED_APPS = [..
'queryapp'
]
Opprett en mappe med navnet maler inne i queryapp mappen og still inn malens plasseringen av appen i MALER del av innstillinger.py fil.
MALER = [.. .
'DIRS': ['/ home / fahmida / django_pro / queryapp / templates'],
.. .
,
]
Lag en modell for databasetabellen:
Åpne modeller.py fil fra queryapp mappen og legg til følgende skript for å definere strukturen til Produkter bord. Produkt klasse er definert for å lage en tabell som heter Produkter med navn, type, merke, og pris Enger. Her, navn, type, og merke felt vil lagre karakterdata, og pris feltet vil lagre heltallsdataene.
modeller.py
# Importer modeller-modulenfra django.db import modeller
# Definer klasse for å lage produkttabell
klasse Produkt (modeller.Modell):
navn = modeller.CharField (max_length = 100)
type = modeller.CharField (max_length = 30)
merkevare = modeller.CharField (max_length = 50)
pris = modeller.IntegerField ()
Kjør makemigrasjoner kommando for å opprette en ny migrering basert på endringene som er gjort av modellene.
$ python3 administrere.py makemigrations queryappKjør migrere kommando for å utføre SQL-kommandoene og opprette alle tabeller i databasen som er definert i modeller.py fil.
$ python3 administrere.py migrereEndre innholdet i admin.py fil med følgende innhold. Her, modellenes produktklassers registreres ved hjelp av registrere() metode for å vise Produkter tabeller i Django-administrasjons dashbordet.
admin.py
# Importer administrasjonsmodulfra django.bidrag importadministrator
# Importer produktmodell
fra .modeller importerer produkt
# Registrer produktmodell
admin.nettstedet.registrer (Produkt)
Opprett en malfil med navnet produktliste.html inne i queryapp / maler / med følgende manus. Dette skriptet viser alle data fra Produkter tabell i tabellform med et søkefelt. Brukeren vil kunne søke i bestemte poster fra produkttabellen ved hjelp av søkeskjemaet. til loop brukes i skriptet for å gjenta dataene som sendes fra utsikt.py fil.
produktliste.html
Django QuerySet-veiledning
Søker etter produkt
ID | Navn | Merke | Pris |
---|---|---|---|
produkt.id | produkt.Navn | produkt.merke | style = "text-align: right"> $ produkt.pris |
Endre innholdet i utsikt.py filen med følgende skript. Modell- og malnavn er definert i Produktliste klasse. get_queryset () metode for klassen er definert i skriptet for å filtrere dataene basert på innholdet som sendes inn i søkefeltet i malen. Produkt.gjenstander.alle() metoden returnerer alle poster av Produkter bord. be om.FÅ.nøkler () metoden brukes i skriptet for å kontrollere at data sendes inn av søkeskjemaet. Hvis denne metoden returnerer ekte, og så be om.FÅ.få ('src') metoden brukes til å kontrollere at den innsendte verdien er tom eller ikke. Hvis denne metoden returnerer en ikke-tom verdi, blir verdien lagret i variabelen, nøkkelord, og den vil bli brukt til å filtrere dataene basert på merke og type felt fra Produkter bord.
utsikt.py
# Import ListView-modulfra django.utsikt.generisk import ListView
# Importer produktmodul
fra .modeller importerer produkt
# Importer Q-modul
fra django.db.modeller importerer Q
# Definer klasse for spørringsdata
klasse Produktliste (ListView):
# Definer modell
modell = Produkt
# Definer mal
template_name = 'productList.html '
def get_queryset (selv):
# Angi standard spørresett
queryset = Produkt.gjenstander.alle()
# Kontroller at skjemaverdien er sendt inn eller ikke
hvis selv.be om.FÅ.nøkler ():
# Sjekk søkeordet
hvis selv.be om.FÅ.få ('src') != ":
nøkkelord = selvtillit.be om.FÅ.få ('src')
# Still spørringssett basert på søkeord
queryset = Produkt.gjenstander.filter (Q (merke = nøkkelord.kapitaliser ()) Q (type = nøkkelord.kapitaliser ()))
returner spørresett
Endre innholdet i nettadresser.py filen med følgende skript. I manuset er 'searchPro/ 'bane er definert for å kalle Produktliste.som_visning () metoden som vil sende alle data og de filtrerte dataene til Produkter tabellen til malfilen.
nettadresser.py
# Importer administrasjonsmodulfra django.bidrag importadministrator
# Importer bane og inkluder modul
fra django.URL-adresse for import
# Importer søkemodulmodul
fra queryapp.visninger importerer ProductList
urlpatterns = [
# Definer banen for admin
sti ('admin /', admin.nettstedet.nettadresser),
# Definer stien til søkeprodukt
sti ('searchPro /', ProductList.as_view ()),
Legg til poster i tabellen:
Åpne Django-administrasjonssiden og legg til noen poster i Produkter tabellen for å bruke spørresettet på den gangen. Her er det satt inn fem poster.
Alle poster av produktene med søkeboksen vil vises i nettleseren etter å ha utført følgende URL.
http: // localhost: 8000 / searchPro
Alle sjampoproduktene vises hvis produkttypen, 'sjampovil bli søkt i søkefeltet.
Melkepulverproduktene fra den friske merke vises hvis produktmerket, 'ferskvil bli søkt i søkefeltet.
Konklusjon:
Måten å filtrere dataene i en enkel databasetabell ved hjelp av queryset er forklart i denne veiledningen. Dataene kan filtreres på forskjellige måter. Leserne vil forstå det å bruke et spørresett for å filtrere eller søke i data i nettleseren etter å ha lest denne opplæringen.