Django

So erstellen Sie eine einfache Suche für eine Django-Site?

So erstellen Sie eine einfache Suche für eine Django-Site?

Ein bestimmter Inhalt einer Website wird normalerweise von den Benutzern über die Google-Suche abgerufen. Wenn diese Suchoption jedoch auf der Website implementiert ist, können die Benutzer ihre gewünschten Inhalte innerhalb der Website leicht finden, ohne die Google-Suche zu verwenden… Ein weiterer Vorteil des Hinzufügens einer Suchoption innerhalb einer Website ist, dass der Entwickler die Suchausgabe richtig verwalten kann. Das heißt, er kann steuern, welcher Inhalt der Website angezeigt wird oder nicht. Dieses Tutorial zeigt den Prozess der Implementierung der grundlegenden Suche auf der Django-Site.

Voraussetzungen:

Bevor Sie das Skript dieses Tutorials üben, müssen Sie die folgenden Aufgaben ausführen:

  1. Installieren Sie die Django-Version 3+ auf Ubuntu 20+ (vorzugsweise)
  2. Erstellen Sie ein Django-Projekt
  3. Führen Sie den Django-Server aus, um zu überprüfen, ob der Server ordnungsgemäß funktioniert oder nicht.

Richten Sie eine Django-App ein:

Führen Sie den folgenden Befehl aus, um eine Django-App namens searchapp . zu erstellen.

$ python3 verwalten.py startapp searchapp

Führen Sie den folgenden Befehl aus, um den Benutzer für den Zugriff auf die Django-Datenbank zu erstellen. Wenn Sie den Benutzer zuvor erstellt haben, müssen Sie den Befehl nicht ausführen.

$ python3 verwalten.py erstelltsuperuser

Fügen Sie den App-Namen im Teil INSTALLED_APP der Einstellungen hinzu.py-Datei.

INSTALLED_APPS = [

'Suchapp'
]

Erstellen Sie einen Ordner namens templates im searchapp-Ordner und legen Sie den Speicherort der Vorlage der App im Abschnitt VORLAGEN der Einstellungen fest.py-Datei.

VORLAGEN = [

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

Modelle erstellen:

Ändern Sie die Modelle.py-Datei mit dem folgenden Skript. Hier wurden zwei Klassen definiert, um zwei relationale Tabellen namens booktypes und books zu erstellen. Das Feld type der Tabelle books ist ein Fremdschlüssel, der aus der Tabelle booktypes hervorgeht.

Modelle.py

# Erforderliche Module importieren
von django.DB-Importmodelle
von django.URL-Import umgekehrt
# Erstelle Modell-Gor-Buchtyp
Klasse Buchtyp (Modelle.Modell):
btype = Modelle.CharField(max_length=100, unique=True)
Klasse Meta:
ordering=('btype',)
# Modellgorbuch erstellen
Klasse Buch (Modelle.Modell):
book_name = Modelle.CharField(max_length=150)
author_name = Modelle.CharField(max_length=150)
Typ = Modelle.ForeignKey(Booktype, on_delete=models.KASKADE)
Preis = Modelle.FloatField()
Veröffentlichung = Modelle.CharField(max_length=100)
Klasse Meta:
ordering=('book_name',)
def __str__(selbst):
kehre selbst zurück.Buchname
def get_url(self):
return reverse('book_detail', args=[self.Ich würde])

Erstellen Sie Vorlagen für die Suche:

Sie benötigen drei HTML-Dateien, um die in diesem Tutorial gezeigte Suchfunktion zu erstellen. Das sind book_list.html, book_detail.html und suchen.html. Die book_list.html zeigt alle Datensätze aus der Büchertabelle an. Das Buch_detail.html zeigt die Details eines bestimmten Buches an. Die Suche.html zeigt das Suchergebnis nach dem Absenden des Suchformulars an.

Bücherliste.html



Bücherliste










% wenn Typ % Typ.name % else % Bücherliste % endif %











% für x in Buch %

x.Buchname


von x.Autorenname


$x.Preis




% endfor %



book_detail.html





Buch.Buchname






Buch.Buchname




Autor: Buch.Autorenname


Typ: Typ


Veröffentlichung: Buch.Veröffentlichung


Preis: $book.Preis







Suche.html



Suchergebnis









% wenn Abfrage %


% mit Ergebnissen.zählen als total_results %
total_results Ergebnis gefunden total_results|pluralize
% Ende mit %


% für c in den Ergebnissen %

c.Buchname


c.Autorenname


% leer %

keine Ergebnisse gefunden.


% endfor %
% endif %






Ansichtsfunktionen erstellen:

Ändern Sie die Ansichten.py-Datei mit dem folgenden Skript. Im Skript wurden drei Funktionen definiert. Die Funktion book_list() zeigt die book_list.html-Datei. Die Funktion book_detail() zeigt das book_detail an.html. Die Funktion search() durchsucht die Datensätze basierend auf den vom Suchformular übermittelten Daten und zeigt das Ergebnis in der Suche an.html.

Ansichten.py

# Erforderliche Module importieren
von django.Verknüpfungen importieren render,get_object_or_404
von .Modelle importieren  Buch, Buchtyp
von django.db.Modelle importieren Q
# Funktion zum Anzeigen aller Bücher definieren
def book_list(Anfrage):
Buch = Buch.Objekte.alle()
return render(request, 'book_list.html', 'Buch': Buch)
# Funktion zum Anzeigen des jeweiligen Buches definieren
def book_detail(request,id):
book = get_object_or_404(Buch, id=id)
Typen = Buchtyp.Objekte.alle()
t = Typen.get(id=buch.Art.Ich würde)
return render(request, 'book_detail.html', 'book': book, 'type': t.btyp)
# Funktion zur Buchsuche definieren
def Suche(Anfrage):
Ergebnisse = []
wenn anfrage.Methode == "GET":
Anfrage = Anfrage.ERHALTEN.holen('suchen')
if Abfrage == ":
Abfrage = 'Keine'
Ergebnisse = Buch.Objekte.filter(Q(book_name__icontains=query) | Q(author_name__icontains=query) | Q(price__icontains=query) )
return render(request, 'search.html', 'Abfrage': Abfrage, 'Ergebnisse': Ergebnisse)

Legen Sie Pfade zum Aufrufen von Ansichtsfunktionen fest:

Ändern Sie die URLs.py-Datei des Django-Projekts mit dem folgenden Skript. Im Skript wurden vier Pfade definiert. Der Pfad 'admin/' wird verwendet, um das Django-Verwaltungs-Dashboard zu öffnen. Der leere Pfad() wird verwendet, um die Funktion book_list() aufzurufen. '/' path wird verwendet, um die Funktion book_detail() aufzurufen. Der Pfad 'search/' wird verwendet, um die Funktion search() aufzurufen.

URLs.py

# Admin-Modul importieren
von django.contrib import admin
# Pfadmodul importieren
von django.URL-Importpfad
# Ansicht importieren
aus searchapp-Importansichten
# Pfade definieren
URLmuster = [
path('admin/', admin.Seite? ˅.URLs),
Pfad(", Ansichten.book_list, name='book_list'),
Pfad('/', Ansichten.book_detail, name='book_detail'),
path('suchen/', Ansichten.Suche, Name='Suche'),
]

Führen Sie die App über den Browser aus:

Führen Sie den folgenden Befehl aus, um den Django-Server auszuführen.

$ python3 verwalten.py-Runserver

Führen Sie die folgende URL in einem beliebigen Browser aus, um die Liste der Bücher aus der Tabelle anzuzeigen.

http://localhost:8000

Wenn der Benutzer auf den Link „PHP und MySQL für dynamische Websites“ klickt, werden die Details dieses Buches im Browser angezeigt.

Wenn der Benutzer das Wort Physik im Browser sucht, wird das folgende Suchergebnis im Browser angezeigt display.

Fazit:

In diesem Tutorial wurde eine Django-App mit der einfachen Suchoption implementiert, indem Datenbanktabellen verwendet werden. Die neuen Django-Entwickler können die Suchfunktion in ihrer Website implementieren, nachdem sie dieses Tutorial gelesen haben.

Beste Spielkonsolen-Emulatoren für Linux
Dieser Artikel listet beliebte Spielekonsolen-Emulationssoftware auf, die für Linux verfügbar ist. Emulation ist eine Softwarekompatibilitätsschicht, ...
Beste Linux-Distributionen für Gaming im Jahr 2021
Das Linux-Betriebssystem hat sich weit von seinem ursprünglichen, einfachen, serverbasierten Aussehen entfernt. Dieses Betriebssystem hat sich in den ...
So erfassen und streamen Sie Ihre Gaming-Sitzung unter Linux
In der Vergangenheit galt das Spielen von Spielen nur als Hobby, aber mit der Zeit verzeichnete die Spieleindustrie ein enormes Wachstum in Bezug auf ...