Django

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

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

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:

  1. Installer Django versjon 3+ på Ubuntu 20+ (helst)
  2. Lag et Django-prosjekt
  3. 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økeapp

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 administrere.py skaperbruker

Legg 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 moduler
fra 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



Bokliste










% if type% type.name % else% Liste over bøker % endif%











% for x i boken%

x.boknavn


av x.forfatternavn


$ x.pris




% endfor%



book_detail.html





bok.boknavn






bok.boknavn




Forfatter: book.forfatternavn


Type: type


Publikasjon: bok.utgivelse


Pris: $ bok.pris







Søk.html



Søkeresultat









% 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 moduler
fra 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 (). '/ 'bane brukes til å ringe funksjonen book_detail (). 'search /' path brukes til å ringe søkefunksjonen ().

nettadresser.py

# Importer administrasjonsmodul
fra 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 runserver

Kjø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.

Beste spill å spille med håndsporing
Oculus Quest introduserte nylig den gode ideen om håndsporing uten kontrollere. Med et stadig økende antall spill og aktiviteter som utfører støtte en...
Hvordan vise OSD-overlegg i fullskjerm Linux-apper og spill
Å spille fullskjermspill eller bruke apper i distraksjonsfri fullskjermmodus kan avskrekke deg fra relevant systeminformasjon som er synlig i et panel...
Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...