So erstellen Sie eine grundlegende Suche nach einer Django -Site?

So erstellen Sie eine grundlegende Suche nach einer Django -Site?

Ein bestimmter Inhalt einer Website wird normalerweise von den Benutzern über Google Search abgerufen. Wenn diese Suchoption jedoch auf der Website implementiert ist, können die Benutzer ihren gewünschten Inhalt auf der Website problemlos finden. Das heißt, er kann steuern, welcher Inhalt der Website angezeigt wird oder nicht. In diesem Tutorial wird der Prozess der Implementierung der grundlegenden Suche in der Django -Website angezeigt.

Voraussetzungen:

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

  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 mit dem Namen SearchApp zu erstellen.

$ python3 verwalten.PY StartApp SearchApp

Führen Sie den folgenden Befehl aus, um den Benutzer zum 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 erzeugt

Fügen Sie den App -Namen in den Teil der Einstellungen installed_app hinzu.PY -Datei.

Installed_apps = [

'SearchApp'
]

Erstellen Sie einen Ordner mit dem Namen Vorlagen im SuchApp -Ordner und legen Sie den Speicherort der App der App in den Vorlagenteil 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 mit dem Namen BookTypes und Bücher zu erstellen. Das Typenfeld der Büchertabelle ist ein Fremdschlüssel, der aus der Booktypes -Tabelle erscheint.

Modelle.py

# Notwendige Module importieren
von django.DB -Importmodelle
von django.URLs importieren umgekehrt
# Modell Gor BookType erstellen
Klassenbuchtyp (Models.Modell):
bype = Modelle.Charfield (max_length = 100, einzigartig = true)
Klassenmeta:
Ordering = ('bype',)
# Modell Gor Book erstellen
Klassenbuch (Models.Modell):
book_name = models.Charfield (max_length = 150)
Autor_name = Modelle.Charfield (max_length = 150)
Typ = Modelle.ForeignKey (BookType, on_delete = Modelle.KASKADE)
Preis = Modelle.Floatfield ()
Veröffentlichung = Modelle.Charfield (max_length = 100)
Klassenmeta:
ordering = ('book_name',)
Def __str __ (Selbst):
Rückkehr selbst.book_name
def get_url (Selbst):
return Reverse ('book_detail', args = [self.Ausweis])

Erstellen Sie Vorlagen für die Suche:

Drei HTML -Dateien sind erforderlich, damit Sie die in diesem Tutorial gezeigte Suchfunktion erstellen können. Dies sind book_list.html, book_detail.HTML und Suche.html. Die book_list.HTML zeigt alle Datensätze aus der Büchertabelle an. Das book_detail.HTML zeigt die Details eines bestimmten Buches an. Die Suche.HTML zeigt das Suchergebnis an, nachdem das Suchformular gesendet wurde.

Bücherliste.html



Bücherliste










% if Typ % Typ.Name % sonst % Liste der Bücher % endif %











% für x in Buch %

X.book_name


von x.Autorenname


$ x.Preis




% endfor %



book_detail.html





Buch.book_name






Buch.book_name




Autor: Buch.Autorenname


Typ: Typ


Veröffentlichung: Buch.Veröffentlichung


Preis: $ Buch.Preis







suchen.html



Suchergebnis









% if Abfrage %


% mit Ergebnissen.Zählen Sie als Total_Results %
Gefunden Total_Results Ergebnis Total_Results | Pluralize
% Ende mit %


% für c in Ergebnissen %

C.book_name


C.Autorenname


% leer %

keine Ergebnisse gefunden.


% endfor %
% endif %






Ansichtsfunktionen erstellen:

Ändern Sie die Ansichten.PY -Datei mit dem folgenden Skript. Drei Funktionen wurden im Skript definiert. Die Funktion book_list () zeigt die book_list an.HTML -Datei. In der Funktion book_detail () wird das book_detail angezeigt.html. Die Funktion such () durchsucht die Datensätze basierend auf den vom Suchformular übermittelten Daten und zeigt das Ergebnis in die Suche an.html.

Ansichten.py

# Notwendige Module importieren
von django.Verknüpfungen importieren Render, get_object_or_404
aus .Modelle importieren Buch, BookType
von django.db.Modelle importieren q
# Funktion definieren, um alle Bücher anzuzeigen
Def book_list (Anfrage):
Buch = Buch.Objekte.alle()
Rendern zurückgeben (Anfrage, 'book_list.Html ', ' Buch ': Buch)
# Funktion definieren, um das bestimmte Buch anzuzeigen
Def book_detail (Anfrage, ID):
book = get_object_or_404 (Buch, id = id)
Typen = bookType.Objekte.alle()
t = Typen.GET (ID = Buch.Typ.Ausweis)
Rendrend zurückgeben (Anfrage, 'book_detail.Html ', ' Buch ': Buch,' Typ ': T.bype)
# Funktion zum Suchen von Buch definieren
Def Search (Anfrage):
Ergebnisse = []
bei Anfrage.Methode == "GET":
Abfrage = Anfrage.ERHALTEN.Get ('Search')
Wenn Abfrage == ":
query = 'keine' '
Ergebnisse = Buch.Objekte.filter (q (book_name__icontains = query) | q (Author_Name__IContains = Abfrage) | Q (Preis__icontains = Abfrage))
Rendern zurückgeben (Anfrage, 'Suche.HTML ', ' Query ': Abfrage,' Ergebnisse ': Ergebnisse)

Setzen Sie Pfade, um Ansichtsfunktionen aufzurufen:

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

URLs.py

# Admin -Modul importieren
von django.Import Administrator beibringen
# Pfadmodul importieren
von django.URLS -Importweg
# Ansicht importieren
von SearchApp -Importansichten
# Pfade definieren
urlpatterns = [
Pfad ('Admin/', Administrator.Grundstück.URLs),
Pfad (", Ansichten.book_list, name = 'book_list'),
Pfad ('/', Ansichten.book_detail, name = 'book_detail'),
Path ('Search/', Ansichten.Suche, Name = 'Suche'),
]

Führen Sie die App aus dem 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 von jedem Browser aus, um die Liste der Bücher aus der Tabelle anzuzeigen.

http: // localhost: 8000

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

Wenn der Benutzer das Wort durchsucht, wird die Physik im Browser das folgende Suchergebnis im Browser angezeigt.

Abschluss:

Eine Django -App mit der grundlegenden Suchoption wurde in diesem Tutorial mithilfe von Datenbanktabellen implementiert. Die neuen Django -Entwickler können die Suchfunktion auf ihrer Website nach dem Lesen dieses Tutorials implementieren.