Ett visst innehåll på en webbplats hämtas normalt av användarna via Google-sökning. Men om detta sökalternativ implementeras på webbplatsen kan användarna enkelt hitta önskat innehåll på webbplatsen utan att använda Google-sökning ... En annan fördel med att lägga till ett sökalternativ på en webbplats är att utvecklaren kan hantera sökresultatet ordentligt. Det betyder att han kan kontrollera vilket innehåll på webbplatsen som ska visas eller inte. Denna handledning visar processen för att implementera den grundläggande sökningen på Django-webbplatsen.
Förutsättningar:
Innan du övar på skriptet i den här självstudien måste du slutföra följande uppgifter:
- Installera Django version 3+ på Ubuntu 20+ (helst)
- Skapa ett Django-projekt
- Kör Django-servern för att kontrollera att servern fungerar korrekt eller inte.
Ställ in en Django-app:
Kör följande kommando för att skapa en Django-app som heter searchapp.
$ python3 hantera.py startapp sökappKör följande kommando för att skapa användaren för åtkomst till Django-databasen. Om du har skapat användaren tidigare behöver du inte köra kommandot.
$ python3 hantera.py skaparanvändareLägg till appnamnet i INSTALLED_APP-delen av inställningarna.py-fil.
INSTALLED_APPS = [..
'sökapp'
]
Skapa en mapp med namnet mallar i searchapp-mappen och ställ in mallens plats för appen i MALLAR-delen av inställningarna.py-fil.
MALLAR = [.. .
'DIRS': ['/ home / fahmida / django_pro / searchapp / mallar'],
.. .
,
]
Skapa modeller:
Ändra modellerna.py-fil med följande skript. Här har två klasser definierats för att skapa två relationstabeller med namnet boktyper och böcker. Typfältet i boktabellen är en främmande nyckel som kommer att visas från boktypstabellen.
modeller.py
# Importera nödvändiga modulerfrån django.db-importmodeller
från django.webbadresser importerar omvänd
# Skapa modell gor boktyp
klass Boktyp (modeller.Modell):
btype = modeller.CharField (max_length = 100, unik = True)
klass Meta:
ordering = ('btype',)
# Skapa modell gor book
klassbok (modeller.Modell):
book_name = modeller.CharField (max_length = 150)
författarnamn = modeller.CharField (max_length = 150)
typ = modeller.ForeignKey (boktyp, on_delete = modeller.KASKAD)
pris = modeller.FloatField ()
publikation = modeller.CharField (max_length = 100)
klass Meta:
ordering = ('boknamn',)
def __str __ (själv):
återvänd själv.boknamn
def get_url (själv):
returnera omvänd ('book_detail', args = [self.id])
Skapa mallar för sökning:
Tre HTML-filer krävs för att du ska kunna skapa den sökfunktion som visas i denna handledning. Dessa är boklista.html, book_detail.html och sök.html. Boklistan.html visar alla poster från böktabellen. Book_detail.html visar detaljerna i en viss bok. Sökningen.html visar sökresultatet efter att sökformuläret har skickats.
bok lista.html
book_detail.html
bok.boknamn
Författare: book.författarens namn
Typ: type
Publikation: bok.offentliggörande
Pris: $ bok.pris
Sök.html
% if fråga%
% med resultat.räknas som total_resultat%
Hittade total_results resultat total_results | pluralize
% sluta med %
% för c i resultat%
c.boknamn
c.författarens namn
% tom%
Inga resultat funna.
% endfor%
% endif%
Skapa visningsfunktioner:
Ändra vyerna.py-fil med följande skript. Tre funktioner har definierats i skriptet. Boklistan () -funktionen visar boklistan.html-fil. Book_detail () -funktionen visar book_detail.html. Sökfunktionen () kommer att söka i posterna baserat på de uppgifter som skickas in av sökformuläret och visa resultatet i sökningen.html.
utsikt.py
# Importera nödvändiga modulerfrån django.genvägar importera render, get_object_or_404
från .modeller importerar bok, boktyp
från django.db.modeller importerar Q
# Definiera funktion för att visa alla böcker
def book_list (begäran):
bok = Bok.föremål.Allt()
returnera render (begäran, 'book_list.html ', ' book ': book)
# Definiera funktion för att visa en viss bok
def book_detail (begäran, id):
bok = get_object_or_404 (bok, id = id)
typer = boktyp.föremål.Allt()
t = typer.få (id = bok.typ.id)
returnera render (begäran, 'book_detail.html ', ' book ': book,' type ': t.btype)
# Definiera funktion för sökbok
def sökning (begäran):
resultat = []
om begäran.metod == "FÅ":
fråga = begäran.SKAFFA SIG.få ('sök')
om fråga == ":
fråga = 'Ingen'
resultat = Boka.föremål.filter (Q (book_name__icontains = query) | Q (author_name__icontains = query) | Q (price__icontains = query))
return render (begäran, 'sök.html ', ' query ': query,' results ': results)
Ställ in vägar för samtalsvyfunktioner:
Ändra webbadresserna.py-fil för Django-projektet med följande skript. Fyra vägar har definierats i skriptet. 'admin /' sökväg används för att öppna Django Administrative Dashboard. Den tomma sökvägen (") används för att anropa funktionen book_list (). ''
webbadresser.py
# Importera administratörsmodulfrån django.bidrag importadministratör
# Importera sökvägsmodul
från django.webbadress för webbadresser
# Importera vy
från sökappens importvyer
# Definiera vägar
urlmönster = [
sökväg ('admin /', admin.webbplats.webbadresser),
sökväg (", vyer.book_list, name = 'book_list'),
sökväg ('/', vyer.book_detail, name = 'book_detail'),
sökväg ('sök /', vyer.sök, namn = 'sök'),
]
Kör appen från webbläsaren:
Kör följande kommando för att köra Django-servern.
$ python3 hantera.py runserverKör följande URL från valfri webbläsare för att visa listan över böcker från tabellen.
http: // localhost: 8000
Om användaren klickar på länken "PHP och MySQL för dynamiska webbplatser" visas detaljerna i denna bok i webbläsaren.
Om användaren söker efter ordet, fysik i webbläsaren, visas följande sökresultat i webbläsaren.
Slutsats:
En Django-app med det grundläggande sökalternativet har implementerats i denna handledning med hjälp av databastabeller. De nya Django-utvecklarna kommer att kunna implementera sökfunktionen på sin webbplats efter att ha läst denna handledning.