Django

Hur man bygger en grundläggande sökning efter en Django-webbplats?

Hur man bygger en grundläggande sökning efter en Django-webbplats?

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:

  1. Installera Django version 3+ på Ubuntu 20+ (helst)
  2. Skapa ett Django-projekt
  3. 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ökapp

Kö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ändare

Lä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 moduler
frå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



Bok lista










% if type% type.name % else% Lista över böcker % endif%











% för x i boken%

x.boknamn


av x.författarens namn


$ x.pris




% endfor%



book_detail.html





bok.boknamn






bok.boknamn




Författare: book.författarens namn


Typ: type


Publikation: bok.offentliggörande


Pris: $ bok.pris







Sök.html



Sökresultat









% 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 moduler
frå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 (). ''/ 'sökväg används för att anropa funktionen book_detail (). sökväg / 'sökväg används för att anropa sökfunktionen ().

webbadresser.py

# Importera administratörsmodul
frå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 runserver

Kö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.

Mus Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Dual Display Mouse Manager låter dig kontrollera och konfigurera musrörelser mellan flera skärmar genom att sakta ner dess rörelser nära gränsen. Wind...
Mus WinMouse låter dig anpassa och förbättra muspekarens rörelse på Windows PC
WinMouse låter dig anpassa och förbättra muspekarens rörelse på Windows PC
Om du vill förbättra standardfunktionerna för din muspekare, använd freeware WinMouse. Det lägger till fler funktioner som hjälper dig att få ut det m...
Mus Mus vänsterklicka på knappen fungerar inte på Windows 10
Mus vänsterklicka på knappen fungerar inte på Windows 10
Om du använder en dedikerad mus med din bärbara dator eller stationära dator men musens vänsterklick-knapp fungerar inte på Windows 10/8/7 av någon an...