Django

Sådan oprettes en grundlæggende søgning efter et Django-sted?

Sådan oprettes en grundlæggende søgning efter et Django-sted?

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:

  1. Installer Django version 3+ på Ubuntu 20+ (helst)
  2. Opret et Django-projekt
  3. 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 searchapp

Kø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 skaberbruger

Tilfø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 moduler
fra 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



Bogliste










% hvis type% type.name % else% Liste over bøger % endif%











% for x i bog%

x.bognavn


af x.forfatternavn


$ x.pris




% endfor%



bogoplysninger.html





Bestil.bognavn






Bestil.bognavn




Forfatter: bog.forfatternavn


Type: type


Publikation: bog.offentliggørelse


Pris: $ bog.pris







Søg.html



Søgeresultat









% 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 moduler
fra 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. ''/ 'stien bruges til at kalde funktionen book_detail (). 'søg /' sti bruges til at kalde søgefunktionen ().

webadresser.py

# Importér admin-modul
fra 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 runserver

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

Bedste apps til Gamepad Mapping til Linux
Hvis du kan lide at spille spil på Linux med en gamepad i stedet for et typisk tastatur- og musesystem, er der nogle nyttige apps til dig. Mange pc-sp...
Nyttige værktøjer til Linux-spillere
Hvis du kan lide at spille spil på Linux, er chancerne for, at du måske har brugt apps og hjælpeprogrammer som Wine, Lutris og OBS Studio for at forbe...
HD Remastered-spil til Linux, der aldrig tidligere havde haft en Linux-udgivelse
Mange spiludviklere og udgivere kommer med HD-remaster af gamle spil for at forlænge franchisens levetid. Venligst fans, der anmoder om kompatibilitet...