Tam tikrą bet kurios svetainės turinį vartotojai paprastai gauna naudodami „Google“ paiešką. Tačiau jei ši paieškos parinktis įgyvendinama svetainėje, tada vartotojai gali lengvai rasti norimą turinį svetainėje nenaudodami „Google“ paieškos ... Kitas paieškos parinkties pridėjimo svetainėje pranašumas yra tas, kad kūrėjas gali tinkamai valdyti paieškos išvestį. Tai reiškia, kad jis gali kontroliuoti, kuris svetainės turinys pasirodys, ar ne. Ši pamoka parodys pagrindinės paieškos diegimo „Django“ svetainėje procesą.
Būtinos sąlygos:
Prieš praktikuodami šios mokymo programos scenarijų, turite atlikti šias užduotis:
- Įdiekite „Django“ versiją 3+ „Ubuntu 20+“ (geriausia)
- Sukurkite „Django“ projektą
- Paleiskite „Django“ serverį ir patikrinkite, ar serveris veikia tinkamai.
Nustatykite „Django“ programą:
Norėdami sukurti „Django“ programą pavadinimu „searchapp“, vykdykite šią komandą.
$ python3 valdyti.py startapp searchappVykdykite šią komandą, kad sukurtumėte vartotoją, kad pasiektumėte „Django“ duomenų bazę. Jei vartotoją sukūrėte anksčiau, komandos vykdyti nereikia.
$ python3 valdyti.py sukurianaudotojasPridėkite programos pavadinimą nustatymų dalyje INSTALLED_APP.py failą.
INSTALLED_APPS = […
„searchapp“
]
„Searchapp“ aplanke sukurkite aplanką su šablonais ir nustatykite programos šablono vietą nustatymų dalyje Šablonai.py failą.
Šablonai = [… .
„DIRS“: ['/ home / fahmida / django_pro / searchapp / templates'],
… .
,
]
Kurti modelius:
Modifikuoti modelius.py failas su tokiu scenarijumi. Čia buvo apibrėžtos dvi klasės, kad būtų sukurtos dvi reliacinės lentelės, pavadintos knygų tipais ir knygomis. Knygų lentelės tipo laukas yra užsienio raktas, kuris pasirodys iš knygų tipų lentelės.
modeliai.py
# Importuokite būtinus moduliusnuo django.db importavimo modeliai
nuo django.URL importas atvirkštinis
# Sukurkite „GOR“ knygų modelio modelį
klasės „Booktype“ (modeliai.Modelis):
btype = modeliai.„CharField“ (maks. Ilgis = 100, unikalus = tiesa)
klasė Meta:
užsakymas = ('btype',)
# Sukurkite pavyzdinę knygos knygą
klasės knyga (modeliai.Modelis):
knygos_pavadinimas = modeliai.„CharField“ (maks. Ilgis = 150)
autoriaus_pavadinimas = modeliai.„CharField“ (maks. Ilgis = 150)
tipas = modeliai.„ForeignKey“ („Booktype“, „on_delete“ = modeliai.KASKADĖ)
kaina = modeliai.„FloatField“ ()
publikacija = modeliai.„CharField“ (maks. Ilgis = 100)
klasė Meta:
užsakymas = ('knygos_pavadinimas',)
def __str __ (savęs):
grąžinti save.knygos_vardas
def get_url (savarankiškai):
grįžti atgal ('book_detail', args = [self.id])
Sukurkite šablonus paieškai:
Norint sukurti šioje pamokoje parodytą paieškos funkciją, reikia trijų HTML failų. Tai yra book_list.html, book_detail.HTML ir ieškokite.HTML. Book_list.html bus rodomi visi įrašai iš knygų lentelės. Knyga_detailas.HTML parodys išsamią konkrečios knygos informaciją. Paieška.Pateikę paieškos formą html parodys paieškos rezultatą.
book_list.HTML
book_detail.HTML
knyga.knygos_pavadinimas
Autorius: knyga.autoriaus_vardas
Tipas: type
Leidinys: knyga.leidinys
Kaina: $ knyga.kaina
Paieška.HTML
%, jei užklausa%
% su rezultatais.suskaičiuoti kaip viso_rezultatai%
Rastas total_results rezultatas total_results | pluralize
% endwith%
% už c rezultatuose%
c.knygos_pavadinimas
c.autoriaus_vardas
% tuščia %
Nieko nerasta.
% endfor%
% endif%
Sukurti rodinio funkcijas:
Keisti rodinius.py failas su tokiu scenarijumi. Scenarijuje buvo apibrėžtos trys funkcijos. Funkcija book_list () parodys book_list.HTML failas. Funkcija book_detail () parodys knygos_detail.HTML. Funkcija „search ()“ ieškos įrašų, remdamasi paieškos formos pateiktais duomenimis, ir rodys rezultatą paieškoje.HTML.
Peržiūrų.py
# Importuokite būtinus moduliusnuo django.nuorodos importuoti atvaizdavimą, get_object_or_404
nuo .modeliai importuoja knygą, knygą
nuo django.db.modeliai importuoja Q
# Apibrėžkite funkciją, kad būtų rodomos visos knygos
def book_list (užklausa):
knyga = knyga.objektai.visi ()
grąžinti pateikimą (užklausa, 'book_list.html ', ' knyga ': knyga)
# Apibrėžkite funkciją, kad būtų rodoma konkreti knyga
def book_detail (užklausa, id):
knyga = get_object_or_404 (knyga, id = id)
tipai = Knygos tipas.objektai.visi ()
t = tipai.gauti (id = knyga.tipo.id)
return render (užklausa, 'book_detail.html ', ' knyga ': knyga,' tipas ': t.btype)
# Apibrėžkite knygos paieškos funkciją
def paieška (užklausa):
rezultatai = []
jei prašoma.metodas == "GAUTI":
užklausa = užklausa.GAUTI.gauti ('ieškoti')
jei užklausa == ":
užklausa = 'Nėra'
rezultatai = knyga.objektai.filtras (Q (knygos_pavadinimas _komponentai = užklausa) | Q (autorius_pavadinimas _komponentas = užklausa) | Q (kaina_komponentas = užklausa))
grąžinti pateikimą (užklausa, 'paieška.html ', ' query ': užklausa,' results ': rezultatai)
Nustatykite skambučių peržiūros funkcijų kelius:
Pakeiskite URL.Django projekto py failas su tokiu scenarijumi. Scenarijuje buvo apibrėžti keturi keliai. 'admin /' kelias naudojamas atidaryti „Django“ administracinę informacijos suvestinę. Tuščias kelias (") naudojamas iškviesti funkciją book_list (). "
URL.py
# Importuoti administratoriaus modulįnuo django.įnašo importo administratorius
# Importo kelio modulis
nuo django.URL importavimo kelias
# Importuoti rodinį
iš „searchapp“ importavimo rodinių
# Apibrėžkite kelius
urlpatterns = [
kelias ('admin /', admin.svetainėje.URL),
kelias (", peržiūros.knyga_vardas, vardas = 'knygu_listas'),
kelias ('/', peržiūros.knygos_detailas, vardas = 'knygos_samelis'),
kelias ('paieška /', peržiūros.paieška, vardas = 'ieškoti'),
]
Paleiskite programą iš naršyklės:
Paleiskite šią komandą, norėdami paleisti „Django“ serverį.
$ python3 valdyti.py runerverPaleiskite šį URL iš bet kurios naršyklės, kad būtų rodomas knygų sąrašas iš lentelės.
http: // localhost: 8000
Jei vartotojas spustelės nuorodą „PHP ir MySQL dinaminėms svetainėms“, tada šios knygos informacija bus rodoma naršyklėje.
Jei vartotojas ieško žodžio, fizikos naršyklėje, naršyklėje bus rodomi šie paieškos rezultatai.
Išvada:
Šioje mokymo programoje, naudojant duomenų bazės lenteles, įdiegta „Django“ programa su pagrindine paieškos parinktimi. Naujieji „Django“ kūrėjai galės įdiegti paieškos funkciją savo svetainėje perskaitę šią pamoką.