Jak zbudować podstawowe wyszukiwanie witryny Django?

Jak zbudować podstawowe wyszukiwanie witryny Django?

Konkretna treść dowolnej witryny jest zwykle pobierana przez użytkowników za pośrednictwem wyszukiwania Google. Jeśli jednak ta opcja wyszukiwania jest zaimplementowana na stronie internetowej, użytkownicy mogą łatwo znaleźć żądaną treść w witrynie bez korzystania z wyszukiwania Google… Kolejną zaletą dodania opcji wyszukiwania w witrynie jest to, że programista może poprawnie zarządzać wyjściem wyszukiwania. Oznacza to, że może kontrolować, która zawartość witryny pojawi się, czy nie. Ten samouczek pokaże proces wdrażania podstawowego wyszukiwania na stronie Django.

Wymagania wstępne:

Przed ćwiczeniem scenariusza tego samouczka musisz wykonać następujące zadania:

  1. Zainstaluj wersję Django 3+ na Ubuntu 20+ (najlepiej)
  2. Utwórz projekt Django
  3. Uruchom serwer Django, aby sprawdzić, czy serwer działa poprawnie lub nie.

Skonfiguruj aplikację Django:

Uruchom następujące polecenie, aby utworzyć aplikację Django o nazwie SearchApp.

$ Python3 Zarządzaj.PY STARTAPP SHARDAPP

Uruchom następujące polecenie, aby utworzyć użytkownika w celu uzyskania dostępu do bazy danych Django. Jeśli wcześniej utworzyłeś użytkownika, nie musisz uruchamiać polecenia.

$ Python3 Zarządzaj.PY CreateSuperuser

Dodaj nazwę aplikacji w części instalowanej_pp.plik py.

Instalowane_apps = [

„SearchApp”
]

Utwórz folder o nazwie szablony w folderze wyszukiwania i ustaw lokalizację szablonu aplikacji w części szablonów ustawień.plik py.

Szablony = [

… .
„Dirs”: ['/home/fahmida/django_pro/SearchApp/Templates']],
… .
,
]

Utwórz modele:

Zmodyfikuj modele.plik py z następującym skryptem. Tutaj zdefiniowano dwie klasy, aby stworzyć dwa tabele relacyjne o nazwie BookTypes and Books. Pole typu tabeli książek to klucz obcy, który pojawi się w tabeli BookTypes.

modele.py

# Zaimportuj niezbędne moduły
z Django.Modele importu DB
z Django.URL Importuj odwrotnie
# Utwórz model GOR BookType
Klasy BookType (Modele.Model):
Btype = Modele.Charfield (max_length = 100, unikalne = true)
Meta klasy:
Zamówienie = („Btype”,)
# Utwórz modelową książkę GOR
Książka klasowa (modele.Model):
book_name = modele.Charfield (max_length = 150)
Autor_name = modele.Charfield (max_length = 150)
type = modele.ForeigNKey (BookType, On_Delete = Modele.KASKADA)
cena = modele.Floatfield ()
Publication = Modele.Charfield (max_length = 100)
Meta klasy:
Zamówienie = („book_name”,)
def __str __ (jaźń):
powrót do siebie.nazwa_kokowania
def get_url (self):
Return Reverse („Book_detail”, args = [self.ID])

Utwórz szablony do wyszukiwania:

Do utworzenia funkcji wyszukiwania pokazanej w tym samouczku wymagane są trzy pliki HTML. To są książka.HTML, Book_Detail.HTML i wyszukiwanie.html. Lista książki.HTML wyświetli wszystkie rekordy z tabeli książek. Book_detail.HTML wyświetli szczegóły konkretnej książki. Poszukiwanie.HTML wyświetli wynik wyszukiwania po przesłaniu formularza wyszukiwania.

Lista książek.html



Lista książek










% If TEPE % type.nazwa % else % lista książek % endif %











% dla x w książce %

X.książka_nazwa


przez x.imię autora


$ x.cena




% endfor %



Book_detail.html





książka.książka_nazwa






książka.książka_nazwa




Autor: książka.imię autora


Type: type


PUBLIKACJA: Book.opublikowanie


Cena: $ Book.cena







szukaj.html



Wynik wyszukiwania









% jeśli zapytanie %


% z wynikami.liczyć jako total_results %
Znaleziono total_results wynik total_results | pluralize
% kończyć z %


% dla C w wynikach %

C.książka_nazwa


C.imię autora


% pusty %

Nie znaleziono wyników.


% endfor %
% endif %






Utwórz funkcje widoku:

Zmodyfikuj widoki.plik py z następującym skryptem. W skrypcie zdefiniowano trzy funkcje. Funkcja Book_List () wyświetli listę Book_List.plik HTML. Funkcja Book_Detail () wyświetli książkę_detail.html. Funkcja wyszukiwania () będzie wyszukiwać rekordy na podstawie danych przesłanych przez formularz wyszukiwania i wyświetli wynik do wyszukiwania.html.

wyświetlenia.py

# Zaimportuj niezbędne moduły
z Django.KRÓTKI Importuj render, get_object_or_404
z .Książka importu modeli, BookType
z Django.db.Modele import q
# Zdefiniuj funkcję, aby wyświetlić wszystkie książki
def book_list (żądanie):
książka = książka.obiekty.Wszystko()
Return Render (żądanie, „książka_list.html ', ' book ': book)
# Zdefiniuj funkcję, aby wyświetlić konkretną książkę
def book_detail (żądanie, id):
book = get_object_or_404 (książka, id = id)
Type = BookType.obiekty.Wszystko()
t = typy.Get (id = książka.typ.ID)
Return Render (żądanie, „book_detail.html ', ' book ': książka, „typ”: t.btype)
# Zdefiniuj funkcję, aby wyszukiwać książka
Wyszukiwanie def (żądanie):
Wyniki = []
na żądanie.Method == „Get”:
zapytanie = żądanie.DOSTAWAĆ.Get („Wyszukaj”)
Jeśli zapytanie == ":
zapytanie = „Brak”
Wyniki = książka.obiekty.Filter (q (book_name__icontains = query) | q (autora_name__icontains = query) | q (price__icontains = zapytanie)))
return render (żądanie, „Wyszukaj.html ', „zapytanie”: zapytanie, „wyniki”: wyniki)

Ustaw ścieżki, aby wywołać funkcje widoku:

Zmodyfikuj adresy URL.plik py z projektu Django z następującym skryptem. W skrypcie zdefiniowano cztery ścieżki. ścieżka „administrator/” służy do otwarcia deski rozdzielczej administracyjnej Django. Pusta ścieżka (") służy do wywołania funkcji Book_List (). '/' ścieżka służy do wywołania funkcji Book_Detail (). Ścieżka „wyszukiwanie/” służy do wywołania funkcji wyszukiwania ().

URL.py

# Importuj moduł administratora
z Django.Administrator importu
# Moduł ścieżki importu
z Django.URL ścieżki importu
# Widok importu
Z wyświetleń importu SearchApp
# Zdefiniuj ścieżki
urlpatterns = [
ścieżka („admin/”, administrator.strona.URL),
ścieżka (", widoki.book_list, name = 'book_list'),
ścieżka („/”, widoki.book_detail, name = 'book_detail'),
ścieżka („wyszukiwanie/”, widoki.Wyszukaj, name = „wyszukiwanie”),
]

Uruchom aplikację z przeglądarki:

Uruchom następujące polecenie, aby uruchomić serwer Django.

$ Python3 Zarządzaj.Py Runserver

Uruchom następujący adres URL z dowolnej przeglądarki, aby wyświetlić listę książek z tabeli.

http: // localhost: 8000

Jeśli użytkownik kliknie link, „PHP i MySQL dla dynamicznych stron internetowych”, szczegóły tej książki pojawią się w przeglądarce.

Jeśli użytkownik przeszuka słowo, fizyka w przeglądarce, w przeglądarce wyświetli następujący wynik wyszukiwania.

Wniosek:

W tym samouczku zaimplementowano aplikację Django z podstawową opcją wyszukiwania. Nowi programiści Django będą mogli wdrożyć funkcję wyszukiwania na swojej stronie internetowej po przeczytaniu tego samouczka.