Et bestemt indhold på ethvert websted hentes normalt af brugerne via Google-søgning. Men hvis denne søgemulighed er implementeret på hjemmesiden, kan brugerne let finde deres ønskede indhold på siden uden brug af Google-søgning ... En anden fordel ved at tilføje en søgemulighed på et websted er, at udvikleren kan administrere søgeoutputtet korrekt. Det betyder, at han kan kontrollere, hvilket indhold på siden der vises eller ej. Denne vejledning viser processen med implementering af den grundlæggende søgning på Django-webstedet.
Forudsætninger:
Før du træner scriptet til denne vejledning, skal du udføre følgende opgaver:
- Installer Django version 3+ på Ubuntu 20+ (helst)
- Opret et Django-projekt
- Kør Django-serveren for at kontrollere, at serveren fungerer korrekt eller ej.
Konfigurer en Django-app:
Kør følgende kommando for at oprette en Django-app ved navn searchapp.
$ python3 administrere.py startapp searchappKør følgende kommando for at oprette brugeren til adgang til Django-databasen. Hvis du har oprettet brugeren før, behøver du ikke køre kommandoen.
$ python3 administrere.py skaberbrugerTilføj appnavnet i INSTALLED_APP-delen af indstillingerne.py-fil.
INSTALLED_APPS = [..
'searchapp'
]
Opret en mappe, der hedder skabeloner inde i searchapp-mappen, og indstil skabelonens placering af appen i TEMPLATES-delen af indstillingerne.py-fil.
MALLER = [.. .
'DIRS': ['/ home / fahmida / django_pro / searchapp / templates'],
.. .
,
]
Opret modeller:
Rediger modellerne.py-fil med følgende script. Her er to klasser defineret til at oprette to relationelle tabeller med navnet bogtyper og bøger. Typefeltet i bogtabellen er en fremmed nøgle, der vises fra bogtypetabellen.
modeller.py
# Importer nødvendige modulerfra django.db import modeller
fra django.webadresser importeres omvendt
# Opret model gor-bogtype
klasse Bogtype (modeller.Model):
btype = modeller.CharField (max_length = 100, unik = True)
klasse Meta:
bestilling = ('btype',)
# Opret model gor bog
klasse Bog (modeller.Model):
bognavn = modeller.CharField (max_length = 150)
forfatternavn = modeller.CharField (max_length = 150)
type = modeller.ForeignKey (bogtype, on_delete = modeller.CASCADE)
pris = modeller.FloatField ()
publikation = modeller.CharField (max_length = 100)
klasse Meta:
bestilling = ('bognavn',)
def __str __ (selv):
vende tilbage selv.bognavn
def get_url (selv):
returner omvendt ('book_detail', args = [self.id])
Opret skabeloner til søgning:
Tre HTML-filer kræves for at du kan oprette søgefunktionen vist i denne vejledning. Disse er bogliste.html, bogoplysninger.html, og søg.html. Boglisten.html viser alle poster fra bøgerne. Bogdetaljen.html viser detaljerne i en bestemt bog. Søgningen.html viser søgeresultatet efter indsendelse af søgeformularen.
bogliste.html
bogoplysninger.html
Bestil.bognavn
Forfatter: bog.forfatternavn
Type: type
Publikation: bog.offentliggørelse
Pris: $ bog.pris
Søg.html
% hvis forespørgsel%
% med resultater.tælle som total_resultater%
Fundet total_results resultat total_results | pluralize
% endwith%
% for c i resultater%
c.bognavn
c.forfatternavn
% tom%
Ingen resultater fundet.
% endfor%
% Afslut Hvis %
Opret visningsfunktioner:
Rediger visningerne.py-fil med følgende script. Tre funktioner er defineret i scriptet. Funktionen bogliste () viser boglisten.html-fil. Book_detail () -funktionen viser book_detail.html. Funktionen søgning () søger i posterne baseret på de data, der indsendes af søgeformularen, og viser resultatet i søgningen.html.
synspunkter.py
# Importer nødvendige modulerfra django.genveje importerer gengivelse, get_object_or_404
fra .modeller importerer bog, bogtype
fra django.db.modeller importerer Q
# Definer funktion for at vise alle bøger
def book_list (anmodning):
bog = Bog.genstande.alle()
returner gengivelse (anmodning, 'book_list.html ', ' book ': book)
# Definer funktion for at få vist den bestemte bog
def book_detail (anmodning, id):
bog = get_object_or_404 (bog, id = id)
typer = Bogtype.genstande.alle()
t = typer.få (id = bog.type.id)
returner gengivelse (anmodning, 'book_detail.html ', ' book ': book,' type ': t.btype)
# Definer funktion til søgebog
def søgning (anmodning):
resultater = []
hvis anmodning.metode == "FÅ":
forespørgsel = anmodning.FÅ.få ('søg')
hvis forespørgsel == ":
forespørgsel = 'Ingen'
resultater = Bestil.genstande.filter (Q (bognavn__icontains = forespørgsel) | Q (author_name__icontains = forespørgsel) | Q (pris__icontains = forespørgsel))
returner gengivelse (anmodning, 'søg.html ', ' query ': query,' results ': results)
Indstil stier til opkaldsvisningsfunktioner:
Rediger webadresserne.py-fil af Django-projektet med følgende script. Fire stier er defineret i scriptet. 'admin /' sti bruges til at åbne Django Administrative Dashboard. Den tomme sti (") bruges til at kalde book_list () -funktionen. ''
webadresser.py
# Importér admin-modulfra django.import importadministrator
# Importer sti-modul
fra django.webadresser til import af sti
# Importvisning
fra importvisningerne til searchapp
# Definer stier
urlmønstre = [
sti ('admin /', admin.websted.webadresser),
sti (", visninger.bogliste, navn = 'bogliste'),
sti ('/', visninger.book_detail, name = 'book_detail'),
sti ('søg /', visninger.søg, navn = 'søg'),
]
Kør appen fra browseren:
Kør følgende kommando for at køre Django-serveren.
$ python3 administrere.py runserverKør følgende URL fra enhver browser for at få vist listen over bøger fra tabellen.
http: // localhost: 8000
Hvis brugeren klikker på linket, "PHP og MySQL til dynamiske websteder", vises detaljerne i denne bog i browseren.
Hvis brugeren søger i ordet, fysik i browseren, vises følgende søgeresultat i browseren.
Konklusion:
En Django-app med den grundlæggende søgemulighed er implementeret i denne vejledning ved hjælp af databasetabeller. De nye Django-udviklere vil være i stand til at implementere søgefunktionen på deres hjemmeside efter at have læst denne vejledning.