Django

Een basiszoekopdracht voor een Django-site maken?

Een basiszoekopdracht voor een Django-site maken?

Een bepaalde inhoud van een site wordt normaal gesproken door de gebruikers opgehaald via Google Zoeken. Als deze zoekoptie echter op de website is geïmplementeerd, kunnen de gebruikers gemakkelijk de gewenste inhoud op de site vinden zonder Google Zoeken te gebruiken... Een ander voordeel van het toevoegen van een zoekoptie binnen een website is dat de ontwikkelaar de zoekoutput goed kan beheren. Dat betekent dat hij kan bepalen welke inhoud van de site wel of niet zal verschijnen. Deze tutorial toont het proces van het implementeren van de basiszoekopdracht op de Django-site.

Vereisten:

Voordat u het script van deze zelfstudie oefent, moet u de volgende taken uitvoeren:

  1. Installeer de Django versie 3+ op Ubuntu 20+ (bij voorkeur)
  2. Een Django-project maken
  3. Voer de Django-server uit om te controleren of de server goed werkt of niet.

Stel een Django-app in:

Voer de volgende opdracht uit om een ​​Django-app met de naam searchapp te maken.

$ python3 beheren.py startapp zoekapp

Voer de volgende opdracht uit om de gebruiker te maken voor toegang tot de Django-database:. Als u de gebruiker eerder hebt gemaakt, hoeft u de opdracht niet uit te voeren.

$ python3 beheren.py createsuperuser

Voeg de app-naam toe in het INSTALLED_APP-gedeelte van de instellingen.py-bestand.

INSTALLED_APPS = [

'zoekapp'
]

Maak een map met de naam sjablonen in de zoekapp-map en stel de locatie van de app in het SJABLONEN-gedeelte van de instellingen in.py-bestand.

SJABLONEN = [

… .
'DIRS': ['/home/fahmida/django_pro/searchapp/templates'],
… .
,
]

Modellen maken:

Wijzig de modellen.py-bestand met het volgende script. Hier zijn twee klassen gedefinieerd om twee relationele tabellen te maken met de naam boektypes en boeken. Het typeveld van de boekentabel is een externe sleutel die zal verschijnen uit de tabel met boektypen.

modellen.py

# Importeer benodigde modules
van django.db-importmodellen
van django.URL's importeren omgekeerd
# Maak een model gor boektype
klasse Boektype(modellen).Model):
btype = modellen.CharField(max_length=100, unique=true)
klasse Meta:
bestellen=('btype',)
# Maak een modelboekboek
klasse Boek (modellen).Model):
book_name = modellen.CharField(max_length=150)
author_name = modellen.CharField(max_length=150)
type = modellen.ForeignKey (Boektype, on_delete=modellen).CASCADE)
prijs = modellen.FloatField()
publicatie = modellen.CharField(max_length=100)
klasse Meta:
order=('book_name',)
def __str__(zelf):
zelf terugkeren.boeknaam
def get_url(zelf):
return reverse('book_detail', args=[zelf.ID kaart])

Sjablonen maken om te zoeken:

Er zijn drie HTML-bestanden nodig om de zoekfunctie te maken die in deze zelfstudie wordt getoond. Dit zijn book_list.html, boek_detail.html, en zoek.html. De boeklijst.html toont alle records uit de boekentabel. Het boek_detail.html geeft de details van een bepaald boek weer. De zoektocht.html geeft het zoekresultaat weer na het indienen van het zoekformulier.

boekenlijst.html



Boekenlijst










% if type % type.naam % else % Lijst met boeken % endif %











% voor x in boek %

X.book_name


door x.auteur naam


$x.prijs




% eindvoor %



book_detail.html





boek.book_name






boek.book_name




Auteur: boek.auteur naam


Typ: type


Publicatie: boek.publicatie


Prijs: $boek.prijs







zoeken.html



Zoekresultaat









% als zoekopdracht %


% met resultaten.tellen als totaal_resultaten %
Gevonden total_results resultaat total_results|pluralize
% eindigt met %


% voor c in resultaten %

c.book_name


c.auteur naam


% leeg %

geen resultaten gevonden.


% eindvoor %
% stop als %






Maak weergavefuncties:

Wijzig de weergaven.py-bestand met het volgende script. Er zijn drie functies gedefinieerd in het script. De functie book_list() geeft de book_list weer.html-bestand. De functie book_detail() geeft de book_detail weer.html. De zoekfunctie () doorzoekt de records op basis van de gegevens die zijn ingediend door het zoekformulier en geeft het resultaat weer in de zoekopdracht.html.

keer bekeken.py

# Importeer benodigde modules
van django.sneltoetsen import render,get_object_or_404
van .modellen importeren  Boek, Boektype
van django.db.modellen importeren Q
# Definieer functie om alle boeken weer te geven
def book_list(verzoek):
boek = boek.voorwerpen.alle()
return render(request, 'book_list'.html', 'boek': boek )
# Definieer functie om het specifieke boek weer te geven
def book_detail (verzoek, id):
boek = get_object_or_404(Boek, id=id)
soorten = Boektype.voorwerpen.alle()
t = typen.get(id=boek).type.ID kaart)
return render(request, 'book_detail').html', 'boek': boek, 'type': t.btype)
# Definieer functie om boek te zoeken
def zoeken (verzoek):
resultaten = []
indien verzoek.methode == "GET":
vraag = verzoek.KRIJGEN.get('zoek')
als vraag == ":
query = 'Geen'
resultaten = Boek.voorwerpen.filter(Q(book_name__icontains=query) | Q(author_name__icontains=query) | Q(price__icontains=query) )
return render(verzoek, 'zoeken'.html', 'query': query, 'results': results)

Paden instellen om weergavefuncties aan te roepen:

Pas de URL's aan.py-bestand van het Django-project met het volgende script:. Er zijn vier paden gedefinieerd in het script. 'admin/'-pad wordt gebruikt om het Django-beheerdashboard te openen. Het lege pad(") wordt gebruikt om de functie book_list() aan te roepen. '/' pad wordt gebruikt om de functie book_detail() aan te roepen. 'search/'-pad wordt gebruikt om de functie search() aan te roepen.

URL's.py

# Beheermodule importeren
van django.bijdrage import beheerder
# Padmodule importeren
van django.URL-importpad
# Weergave importeren
van zoekapp importweergaven
# Definieer paden
urlpatronen = [
pad('admin/', beheerder.website.URL's),
pad(", weergaven.book_list, name='book_list'),
pad('/', weergaven.book_detail, naam='book_detail'),
path('search/', views.zoeken, naam='zoeken'),
]

Start de app vanuit de browser:

Voer de volgende opdracht uit om de Django-server uit te voeren:.

$ python3 beheren.py runserver

Voer de volgende URL uit vanuit elke browser om de lijst met boeken uit de tabel weer te geven:.

http://localhost:8000

Als de gebruiker op de link "PHP en MySQL voor dynamische websites" klikt, verschijnen de details van dit boek in de browser.

Als de gebruiker het woord natuurkunde in de browser zoekt, wordt het volgende zoekresultaat in de browser weergegeven:.

Conclusie:

Een Django-app met de basiszoekoptie is in deze zelfstudie geïmplementeerd met behulp van databasetabellen. De nieuwe Django-ontwikkelaars kunnen de zoekfunctie in hun website implementeren na het lezen van deze tutorial.

Hoe League Of Legends op Ubuntu 14 te installeren.04
Als je fan bent van League of Legends, dan is dit een kans voor jou om League of Legends te testen. Merk op dat LOL wordt ondersteund op PlayOnLinux a...
Installeer de nieuwste OpenRA Strategy Game op Ubuntu Linux
OpenRA is een Libre/Free Real Time Strategy-game-engine die de vroege Westwood-games nabootst, zoals de klassieke Command & Conquer: Red Alert. Gedist...
Installeer de nieuwste Dolphin Emulator voor Gamecube & Wii op Linux
Met de Dolphin Emulator kun je de door jou gekozen Gamecube- en Wii-spellen spelen op Linux Personal Computers (pc). Omdat het een vrij beschikbare e...