Hvordan bygge et grunnleggende søk etter et Django -nettsted?

Hvordan bygge et grunnleggende søk etter et Django -nettsted?

Et bestemt innhold på et hvilket som helst nettsted blir normalt hentet av brukerne gjennom Google -søk. Imidlertid, hvis dette søkealternativet implementeres på nettstedet, kan brukerne enkelt finne ønsket innhold på nettstedet uten å bruke Google -søk ... en annen fordel med å legge til et søkealternativ i et nettsted er at utvikleren kan administrere søkeutgangen riktig. Det betyr at han kan kontrollere hvilket innhold på nettstedet som vil vises eller ikke. Denne opplæringen vil vise prosessen med å implementere det grunnleggende søket på Django -nettstedet.

Forutsetninger:

Før du øver på skriptet til denne opplæringen, må du fullføre følgende oppgaver:

  1. Installer Django versjon 3+ på Ubuntu 20+ (helst)
  2. Lag et Django -prosjekt
  3. Kjør Django -serveren for å sjekke at serveren fungerer som den skal eller ikke.

Sett opp en Django -app:

Kjør følgende kommando for å opprette en Django -app som heter SearchApp.

$ Python3 Administrer.PY StartApp SearchApp

Kjø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 Administrer.Py CreateSuperuser

Legg til appnavnet i den installerte_app -delen av innstillingene.py -fil.

Installert_apps = [
..
'SearchApp'
]

Opprett en mappe som heter maler i SearchApp -mappen og angi malens plassering av appen i malen en del av innstillingene.py -fil.

Maler = [

.. .
'Dirs': ['/home/fahmida/django_pro/searchapp/maler'],
.. .
,
]

Lage modeller:

Endre modellene.py -fil med følgende skript. Her er det definert to klasser for å lage to relasjonelle tabeller som heter Booktypes and Books. Typefeltet i Books -tabellen er en fremmed nøkkel som vil vises fra Booktypes -tabellen.

modeller.py

# Importer nødvendige moduler
Fra Django.DB importmodeller
Fra Django.URL -er importerer omvendt
# Opprett modell GOR BookType
Klasseboktype (modeller.Modell):
BType = modeller.Charfield (max_length = 100, unik = sant)
Klassemeta:
bestilling = ('btype',)
# Opprett modell Gor Book
Klassebok (modeller.Modell):
boknavn = modeller.Charfield (Max_Length = 150)
forfatternavn = modeller.Charfield (Max_Length = 150)
type = modeller.ForeignKey (BookType, On_Delete = Modeller.Kaskade)
Pris = modeller.Floatfield ()
Publikasjon = modeller.Charfield (max_length = 100)
Klassemeta:
bestilling = ('boknavn',)
def __str __ (selv):
Returnerer selv.boknavn
def get_url (selv):
return revers ('book_detail', args = [selv.id])

Lag maler for søk:

Tre HTML -filer er påkrevd for at du oppretter søkefunksjonen som vises i denne opplæringen. Dette er bok_liste.html, book_detail.html, og søk.html. Bok_listen.HTML vil vise alle poster fra Books -tabellen. Book_Detail.HTML vil vise detaljene i en bestemt bok. Søket.HTML vil vise søkeresultatet etter å ha sendt inn søkeskjemaet.

Book_list.html



Bokliste










% hvis type % type.name % annet % liste over bøker % endif %











% for x i bok %

x.Book_name


av x.forfatternavn


$ x.pris




% endfor %



Book_Detail.html





bok.Book_name






bok.Book_name




Forfatter: bok.forfatternavn


Type: type


Publikasjon: bok.utgivelse


Pris: $ bok.pris







Søk.html



Søkeresultat









% Hvis spørring %


% med resultater.telle som total_results %
Funnet total_results resultat total_results | pluralize
% endwith %


% for C i resultater %

c.Book_name


c.forfatternavn


% tom %

Ingen resultater.


% endfor %
% slutt om %






Lag visningsfunksjoner:

Endre visningene.py -fil med følgende skript. Tre funksjoner er definert i skriptet. Book_list () -funksjonen vil vise bok_listen.HTML -fil. Book_Detail () -funksjonen vil vise Book_Detail.html. Søk () -funksjonen vil søke i postene basert på dataene som er sendt inn i søkeskjemaet og vise resultatet i søket.html.

utsikt.py

# Importer nødvendige moduler
Fra Django.snarveier import render, get_object_or_404
fra .Modeller importerer bok, boktype
Fra Django.db.Modeller importerer q
# Definer funksjon for å vise alle bøker
def book_list (forespørsel):
bok = bok.objekter.alle()
Retur Render (forespørsel, 'Book_list.html ', ' bok ': bok)
# Definer funksjon for å vise den aktuelle boken
def book_detail (forespørsel, id):
bok = get_object_or_404 (bok, id = id)
typer = boktype.objekter.alle()
t = typer.få (id = bok.type.id)
Retur Render (forespørsel, 'Book_Detail.html ', ' bok ': bok,' type ': t.BType)
# Definer funksjon for å søke i boka
def search (forespørsel):
resultater = []
Hvis forespørsel.Metode == "Get":
spørring = forespørsel.FÅ.få ('søk')
Hvis spørring == ":
spørring = 'Ingen'
Resultater = bok.objekter.Filter (Q (Book_Name__icontains = Query) | Q (Author_Name__icontains = Query) | Q (Price__icontains = Query)))
Retur Render (forespørsel, 'Søk.html ', ' spørring ': spørring,' resultater ': resultater)

Angi stier for å ringe visningsfunksjoner:

Endre nettadressene.PY -fil av Django -prosjektet med følgende skript. Fire stier er definert i skriptet. 'Admin/' -banen brukes til å åpne Django Administrative Dashboard. Den tomme banen (") brukes til å ringe bokenes bok_list (). '/' sti brukes til å ringe boken Book_Detail (). 'Search/' -banen brukes til å kalle søk () -funksjonen.

URLS.py

# Importer administratormodul
Fra Django.bidra importadministrator
# Importer banemodul
Fra Django.URLS importerer bane
# Importer visning
Fra SearchApp importvisninger
# Definer stier
urlpatterns = [
bane ('admin/', admin.nettstedet.URL),
bane (", visninger.Book_list, name = 'book_list'),
Sti ('/', visninger.book_detail, name = 'book_detail'),
bane ('søk/', visninger.Søk, navn = 'Søk'),
]

Kjør appen fra nettleseren:

Kjør følgende kommando for å kjøre Django Server.

$ Python3 Administrer.py runserver

Kjør følgende URL fra hvilken som helst nettleser for å vise listen over bøkene fra tabellen.

http: // localhost: 8000

Hvis brukeren klikker på lenken, "PHP og MySQL for dynamiske nettsteder", vil detaljene i denne boken vises i nettleseren.

Hvis brukeren søker i ordet, fysikk i nettleseren, vises følgende søkeresultat i nettleseren.

Konklusjon:

En Django -app med det grunnleggende søkealternativet er implementert i denne opplæringen ved å bruke databasetabeller. De nye Django -utviklerne vil kunne implementere søkefunksjonen på nettstedet deres etter å ha lest denne opplæringen.