Et bestemt innhold på et hvilket som helst nettsted blir normalt hentet av brukerne via Google-søk. Imidlertid, hvis dette søkealternativet er implementert på nettstedet, kan brukerne enkelt finne ønsket innhold på nettstedet uten å bruke Google-søk ... En annen fordel ved å legge til et søkealternativ på et nettsted er at utvikleren kan administrere søkeutgangen riktig. Det betyr at han kan kontrollere hvilket innhold på nettstedet som vises eller ikke. Denne veiledningen viser prosessen med å implementere det grunnleggende søket på Django-nettstedet.
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 som heter searchapp.
$ python3 administrere.py startapp søkeappKjø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 INSTALLED_APP-delen av innstillingene.py-fil.
INSTALLED_APPS = [..
'searchapp'
]
Lag en mappe som heter maler inne i searchapp-mappen og angi malens plassering av appen i MAL-delen av innstillingene.py-fil.
MALER = [.. .
'DIRS': ['/ home / fahmida / django_pro / searchapp / templates'],
.. .
,
]
Lag modeller:
Endre modellene.py-fil med følgende skript. Her har to klasser blitt definert for å lage to relasjonstabeller som heter boktyper og bøker. Type-feltet i bøketabellen er en fremmed nøkkel som vises fra boktypetabellen.
modeller.py
# Importer nødvendige modulerfra django.db import modeller
fra django.nettadresser importerer omvendt
# Lag modell gor boktype
klasse Boktype (modeller.Modell):
btype = modeller.CharField (max_length = 100, unique = True)
klasse Meta:
bestilling = ('btype',)
# Lag modellgorbok
class Book (modeller.Modell):
book_name = modeller.CharField (max_length = 150)
forfatternavn = modeller.CharField (max_length = 150)
type = modeller.ForeignKey (boktype, on_delete = modeller.CASCADE)
pris = modeller.FloatField ()
publikasjon = modeller.CharField (max_length = 100)
klasse Meta:
bestilling = ('boknavn',)
def __str __ (selv):
tilbake selv.boknavn
def get_url (selv):
return reverse ('book_detail', args = [self.id])
Lag maler for søk:
Tre HTML-filer kreves for at du skal opprette søkefunksjonen som vises i denne opplæringen. Dette er bokliste.html, book_detail.html, og søk.html. Boklisten.html vil vise alle poster fra bøkene tabellen. Book_detail.html vil vise detaljene til en bestemt bok. Søket.html vil vise søkeresultatet etter at du har sendt inn skjemaet.
bokliste.html
book_detail.html
bok.boknavn
Forfatter: book.forfatternavn
Type: type
Publikasjon: bok.utgivelse
Pris: $ bok.pris
Søk.html
% if query%
% med resultater.tell som totalresultater%
Fant total_results resultat total_results | pluralize
% endwith%
% for c i resultater%
c.boknavn
c.forfatternavn
% tom%
Ingen resultater.
% endfor%
% slutt om %
Opprett visningsfunksjoner:
Endre visningene.py-fil med følgende skript. Tre funksjoner er definert i skriptet. Funksjonen bokliste () viser boklisten.html-fil. Book_detail () -funksjonen viser book_detail.html. Søk () -funksjonen vil søke i postene basert på dataene som sendes inn av søkeskjemaet og vise resultatet i søket.html.
utsikt.py
# Importer nødvendige modulerfra django.snarveier importerer gjengivelse, get_object_or_404
fra .modeller importerer Book, Booktype
fra django.db.modeller importerer Q
# Definer funksjon for å vise alle bøker
def book_list (forespørsel):
bok = Bok.gjenstander.alle()
return render (forespørsel, 'book_list.html ', ' book ': book)
# Definer funksjon for å vise den aktuelle boken
def book_detail (forespørsel, id):
bok = get_object_or_404 (bok, id = id)
typer = boktype.gjenstander.alle()
t = typer.få (id = bok.type.id)
return render (forespørsel, 'book_detail.html ', ' book ': book,' type ': t.btype)
# Definer funksjon for å søke i boken
def søk (forespørsel):
resultater = []
hvis forespørsel.metode == "FÅ":
spørring = forespørsel.FÅ.få ('søk')
if query == ":
spørring = 'Ingen'
resultater = Bestill.gjenstander.filter (Q (book_name__icontains = query) | Q (author_name__icontains = query) | Q (price__icontains = query))
return render (forespørsel, 'søk.html ', ' query ': query,' results ': results)
Still stier til samtalevisningsfunksjoner:
Endre nettadressene.py-fil av Django-prosjektet med følgende skript. Fire veier er definert i manuset. 'admin /' bane brukes til å åpne Django Administrative Dashboard. Den tomme banen (") brukes til å kalle funksjonen book_list (). '
nettadresser.py
# Importer administrasjonsmodulfra django.bidrag importadministrator
# Importer banemodul
fra django.URL-adresse for import
# Importer visning
fra searchapps importvisninger
# Definer stier
urlpatterns = [
sti ('admin /', admin.nettstedet.nettadresser),
sti (", visninger.bokliste, navn = 'bokliste'),
sti ('/', visninger.book_detail, name = 'book_detail'),
sti ('søk /', visninger.søk, navn = 'søk'),
]
Kjør appen fra nettleseren:
Kjør følgende kommando for å kjøre Django-serveren.
$ python3 administrere.py runserverKjør følgende URL fra hvilken som helst nettleser for å vise listen over bøker 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 veiledningen ved hjelp av databasetabeller. De nye Django-utviklerne vil kunne implementere søkefunksjonen på nettstedet sitt etter å ha lest denne opplæringen.