Django

Kuidas luua Django saidi põhiotsingut?

Kuidas luua Django saidi põhiotsingut?

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:

  1. Installige Django versioon 3+ Ubuntu 20+ (eelistatult)
  2. Looge Django projekt
  3. 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 searchapp

Kä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 ülikasutaja

Lisage 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 moodulid
alates 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



Raamatute loend










% kui tüüp% tüüp.nimi % else% Raamatute loend % endif%











% x-i kohta raamatus%

x.raamatu_nimi


autor: x.autori_nimi


$ x.hind




% endfor%



raamatuandmed.HTML





raamat.raamatu_nimi






raamat.raamatu_nimi




Autor: raamat.autori_nimi


Tüüp: type


Väljaanne: raamat.väljaanne


Hind: $ raamat.hind







otsing.HTML



Otsingutulemus









% 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 moodulid
alates 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. "/ 'teed kasutatakse funktsiooni book_detail () kutsumiseks. 'search /' pathi kasutatakse funktsiooni search () kutsumiseks.

URL-id.py

# Impordi administraatori moodul
alates 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öötaberver

Tabelis 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.

Parimad Oculus App Lab mängud
Kui olete Oculuse peakomplekti omanik, peate olema teadlik külglaadimisest. Kõrvalaadimine on protsess, millega installitakse peakomplekti mitte-poesi...
10 parimat mängu, mida Ubuntu kaudu mängida
Windowsi platvorm on olnud üks mängude domineerivaid platvorme, kuna tohutu protsent mänge areneb täna Windowsi loomupäraseks toetamiseks. Kas keegi s...
5 parimat arkaadmängu Linuxile
Tänapäeval on arvutid tõsised mängimiseks kasutatavad masinad. Kui te ei saa uut rekordit, teate, mida ma mõtlen. Selles postituses saate teada mõnda ...