Kasutajad saavad tavaliselt mis tahes saidi konkreetse sisu Google'i otsingu kaudu. Kui aga see otsinguvõimalus on veebisaidil rakendatud, saavad kasutajad oma saidil soovitud sisu hõlpsasti leida ilma Google'i otsingut kasutamata ... Veel üks eelis, kui otsinguvõimalust veebisaidil lisada, on see, et arendaja saab otsingu väljundit õigesti hallata. See tähendab, et ta saab kontrollida, milline saidi sisu ilmub või mitte. See õpetus näitab Django saidi põhiotsingu rakendamise protsessi.
Eeldused:
Enne selle õpetuse skripti harjutamist peate täitma järgmised ülesanded:
- Installige Django versioon 3+ Ubuntu 20+ (eelistatult)
- Looge Django projekt
- Käivitage Django server, et kontrollida, kas server töötab korralikult või mitte.
Django rakenduse seadistamine:
Django rakenduse nimega searchapp loomiseks käivitage järgmine käsk.
$ python3 hallata.py startapp searchappKäivitage järgmine käsk, et luua kasutaja Django andmebaasile juurdepääsuks. Kui olete kasutaja varem loonud, ei pea te käsku käivitama.
$ python3 hallata.py loob ülikasutajaLisage rakenduse nimi seadete ossa INSTALLED_APP.py-fail.
INSTALLED_APPS = […
'searchapp'
]
Looge kausta searchapp sees kaust nimega mallid ja määrake sätete osas Mallid rakenduse malli asukoht.py-fail.
MALLID = [… .
'DIRS': ['/ home / fahmida / django_pro / searchapp / templates'],
… .
,
]
Loo mudelid:
Muuda mudeleid.py fail järgmise skriptiga. Siin on määratletud kaks klassi, et luua kaks relatsioonitabelit nimega booktypes ja books. Raamatute tabeli tüübi väli on võõrvõti, mis kuvatakse booktypes tabelist.
mudelid.py
# Importige vajalikud moodulidalates django.db impordimudelid
alates django.URL-ide import vastupidine
# Loo mudel gor booktype
klassi Booktype (mudelid.Mudel):
btype = mudelid.CharField (max_length = 100, unikaalne = True)
klassi Meta:
tellimine = ('btype',)
# Loo mudeli raamat
klassi raamat (mudelid.Mudel):
raamatu_nimi = mudelid.CharField (max_pikkus = 150)
autori_nimi = mudelid.CharField (max_pikkus = 150)
tüüp = mudelid.ForeignKey (Booktype, on_delete = mudelid.KASADI)
hind = mudelid.FloatField ()
väljaanne = mudelid.CharField (max_pikkus = 100)
klassi Meta:
tellimine = ('raamatu_nimi',)
def __str __ (ise):
tagasi ise.raamatu_nimi
def get_url (ise):
return reverse ('raamatu_andmed', args = [ise.id])
Looge otsimiseks mallid:
Selles õpetuses kuvatud otsingufunktsiooni loomiseks on vaja kolme HTML-faili. Need on book_list.html, book_detail.HTML ja otsige.HTML. Book_list.HTML kuvab kõik raamatute tabeli kirjed. Raamatu_andmed.HTML kuvab konkreetse raamatu üksikasjad. Otsing.HTML kuvab otsingutulemuse pärast otsinguvormi saatmist.
book_list.HTML
raamatuandmed.HTML
raamat.raamatu_nimi
Autor: raamat.autori_nimi
Tüüp: type
Väljaanne: raamat.väljaanne
Hind: $ raamat.hind
otsing.HTML
% kui päring%
% tulemustega.arvestada kokku_tulemust%
Leiti total_results tulemus total_results | pluralize
% endwith%
% tulemuste c jaoks tulemustes%
c.raamatu_nimi
c.autori_nimi
% tühi %
Tulemusi ei leitud.
% endfor%
% endif%
Vaate funktsioonide loomine:
Muutke vaateid.py fail järgmise skriptiga. Skriptis on määratletud kolm funktsiooni. Funktsioon book_list () kuvab book_list.HTML-fail. Funktsioon book_detail () kuvab book_detail.HTML. Funktsioon search () otsib kirjeid otsinguvormi esitatud andmete põhjal ja kuvab tulemuse otsingusse.HTML.
vaated.py
# Impordi vajalikud moodulidalates django.otseteed impordi renderdamine, get_object_or_404
alates .mudelid impordivad Book, Booktype
alates django.db.mudelid impordivad Q
# Määratlege funktsioon kõigi raamatute kuvamiseks
def book_list (taotlus):
raamat = raamat.objektid.kõik ()
return render (taotlus, 'book_list.html ', ' raamat ': raamat)
# Määratlege konkreetse raamatu kuvamise funktsioon
def book_detail (taotlus, id):
raamat = get_object_or_404 (raamat, id = id)
tüübid = Booktype.objektid.kõik ()
t = tüübid.get (id = raamat.tüüp.id)
return render (taotlus, 'book_detail.html ', ' raamat ': raamat,' tüüp ': t.btype)
# Määrake raamatu otsimiseks funktsioon
def otsing (taotlus):
tulemused = []
soovi korral.meetod == "GET":
päring = taotlus.Hangi.hankima ('otsing')
kui päring == ":
query = 'Puudub'
tulemused = raamat.objektid.filter (Q (raamatu_nimi__sisaldab = päring) | Q (autori_nimi__sisaldab = päring) | Q (hind_sisaldab = päring))
return render (taotlus, 'otsing.html ', ' query ': query,' results ': results)
Kõnevaate funktsioonide teede määramine:
Muutke URL-e.Django projekti py fail järgmise skriptiga. Skriptis on määratletud neli rada. 'admin /' teed kasutatakse Django administratiivse juhtpaneeli avamiseks. Tühja rada (") kasutatakse funktsiooni book_list () kutsumiseks. "
URL-id.py
# Impordi administraatori moodulalates django.kaastöö impordi admin
# Importimooduli import
alates django.URL-ide importimise tee
# Importivaade
otsingurakenduse impordivaadetest
# Määrake teed
urlpatterns = [
tee ('admin /', admin.sait.URL-id),
tee (", vaated.book_list, nimi = 'book_list'),
tee ('/', vaated.book_detail, name = 'book_detail'),
tee ('otsing /', vaated.otsing, nimi = 'otsing'),
]
Käivitage rakendus brauseris:
Django serveri käivitamiseks käivitage järgmine käsk.
$ python3 hallata.py töötaberverTabelis olevate raamatute loendi kuvamiseks käivitage mis tahes brauseris järgmine URL.
http: // localhost: 8000
Kui kasutaja klõpsab lingil „PHP ja MySQL dünaamiliste veebisaitide jaoks“, kuvatakse selle raamatu üksikasjad brauseris.
Kui kasutaja otsib brauseris sõna füüsika, kuvatakse brauseris järgmine otsingutulemus.
Järeldus:
Selles õpetuses on andmebaasitabelite abil rakendatud Django rakendus koos otsingu põhivalikuga. Django uued arendajad saavad pärast selle õpetuse lugemist oma veebisaidil otsingufunktsiooni rakendada.