Konkretna treść dowolnej witryny jest zwykle pobierana przez użytkowników przez wyszukiwarkę Google. Jeśli jednak ta opcja wyszukiwania jest zaimplementowana w witrynie, użytkownicy mogą łatwo znaleźć żądaną treść w witrynie bez korzystania z wyszukiwarki Google… Kolejną korzyścią z dodania opcji wyszukiwania w witrynie jest to, że programista może odpowiednio zarządzać wynikami wyszukiwania. Oznacza to, że może kontrolować, która zawartość witryny będzie się pojawiać, a która nie. Ten samouczek pokaże proces implementacji podstawowego wyszukiwania w serwisie Django.
Wymagania wstępne:
Zanim zaczniesz ćwiczyć skrypt tego samouczka, musisz wykonać następujące zadania:
- Zainstaluj Django w wersji 3+ na Ubuntu 20+ (najlepiej)
- Utwórz projekt Djangogo
- Uruchom serwer Django, aby sprawdzić, czy serwer działa poprawnie, czy nie.
Skonfiguruj aplikację Django:
Uruchom następujące polecenie, aby utworzyć aplikację Django o nazwie searchapp.
$ python3 zarządzaj.py startapp searchappUruchom następujące polecenie, aby utworzyć użytkownika umożliwiającego dostęp do bazy danych Django. Jeśli utworzyłeś użytkownika wcześniej, nie musisz uruchamiać polecenia.
$ python3 zarządzaj.py tworzy superużytkownikDodaj nazwę aplikacji w części INSTALLED_APP w ustawieniach.plik py.
INSTALLED_APPS = […
„wyszukiwarka”
]
Utwórz folder o nazwie templates w folderze searchapp i ustaw lokalizację szablonu aplikacji w części SZABLONY w ustawieniach.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ć dwie relacyjne tabele nazwane booktypes i books. Pole typu tabeli książek jest kluczem obcym, który pojawi się w tabeli rodzajów książek book.
modele.py
# Importuj niezbędne modułyz django.modele importu db
z django.odwrotne importowanie adresów URL
# Utwórz model gor booktype
klasa Booktype (modele).Model):
btyp = modele.CharField (max_length=100, unikalne=True)
Meta klasy:
zamawianie=('btyp',)
# Utwórz książkę modelu gor
klasa Książka (modele).Model):
nazwa_książki = modele.Pole znaku (max_length=150)
autor_name = modele.Pole znaku (max_length=150)
typ = modele.ForeignKey(Booktype, on_delete=models.KASKADA)
cena = modele.Pole zmiennoprzecinkowe()
publikacja = modele.Pole znaku(max_length=100)
Meta klasy:
zamawianie=('nazwa_książki',)
def __str__(samo):
wróć do siebie.nazwa_książki
def get_url(self):
return reverse('book_detail', args=[self.ID])
Utwórz szablony do wyszukiwania:
Do utworzenia funkcji wyszukiwania pokazanej w tym samouczku potrzebne są trzy pliki HTML. To są book_list.html, szczegóły_książki.html i wyszukiwanie.html. Lista_książek.html wyświetli wszystkie rekordy z tabeli książek. Szczegóły_książki.html wyświetli szczegóły konkretnej książki. Poszukiwanie.html wyświetli wynik wyszukiwania po przesłaniu formularza wyszukiwania.
Lista książek.html
szczegóły_książki.html
książka.nazwa_książki
Autor: książka.imię autora
Typ: typ
Publikacja: książka.opublikowanie
Cena: książka . USD.Cena £
Szukaj.html
% jeśli zapytanie %
% z wynikami.licz jako total_results %
Znaleziono total_results wynik total_results|pluralize
% kończyć z %
% dla c w wynikach %
do.nazwa_książki
do.imię autora
% pustych %
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 book_list.plik html. Funkcja book_detail() wyświetli book_detail.html. Funkcja search() przeszuka rekordy na podstawie danych przesłanych przez formularz wyszukiwania i wyświetli wynik w wyszukiwaniu.html.
wyświetlenia.py
# Importuj niezbędne modułyz django.skróty importują renderowanie, get_object_or_404
z .modele importują Książka, Książka
z django.db.modele importują Q
# Zdefiniuj funkcję wyświetlania wszystkich książek
def lista_książek(żądanie):
książka = książka.przedmioty.wszystko()
return render(request, 'book_list.html', 'książka': książka)
# Zdefiniuj funkcję wyświetlania konkretnej książki
def book_detail(żądanie,id):
książka = get_object_or_404(książka, id=id)
typy = Booktype.przedmioty.wszystko()
t = typy.pobierz(id=książka.rodzaj.ID)
return render(request, 'book_detail.html', 'książka': książka, 'typ': t.brodzaj)
# Zdefiniuj funkcję wyszukiwania książki
wyszukiwanie definicji(żądanie):
wyniki = []
jeśli prośba.metoda == "POBIERZ":
zapytanie = żądanie.OTRZYMAĆ.pobierz('szukaj')
jeśli zapytanie == ":
zapytanie = 'Brak'
wyniki = Książka.przedmioty.filter(Q(nazwa_książki__icontains=zapytanie) | Q(nazwa_autora__icontains=zapytanie) | Q(cena__icontains=zapytanie))
return render(request, 'szukaj.html', 'zapytanie': zapytanie, 'wyniki': wyniki)
Ustaw ścieżki do wywołania funkcji widoku:
Zmodyfikuj adresy URL.plik py projektu Django z następującym skryptem. W skrypcie zostały zdefiniowane cztery ścieżki. Ścieżka 'admin/' służy do otwierania panelu administracyjnego Django. Pusta ścieżka() służy do wywołania funkcji book_list(). '
adresy URL.py
# Importuj moduł administracyjnyz django.admin importu wkładów
# Importuj moduł ścieżki
z django.Ścieżka importu adresów URL
# Importuj widok
z widoków importu aplikacji wyszukiwania
# Zdefiniuj ścieżki
wzory url = [
ścieżka('admin/', admin.teren.adresy URL),
ścieżka(", widoki.lista_książek, nazwa='lista_książek'),
ścieżka('/', widoki.szczegóły_książki, nazwa='szczegóły_książki'),
ścieżka('szukaj/', widoki.szukaj, nazwa='szukaj'),
]
Uruchom aplikację z przeglądarki:
Uruchom następujące polecenie, aby uruchomić serwer Django.
$ python3 zarządzaj.py runserverUruchom następujący adres URL w dowolnej przeglądarce, aby wyświetlić listę książek z tabeli.
http://localhost:8000
Jeśli użytkownik kliknie łącze „PHP i MySQL dla dynamicznych witryn sieci Web”, w przeglądarce pojawią się szczegóły tej książki.
Jeśli użytkownik wyszuka słowo, fizyka w przeglądarce, w przeglądarce zostanie wyświetlony następujący wynik wyszukiwania.
Wniosek:
Aplikacja Django z podstawową opcją wyszukiwania została zaimplementowana w tym samouczku za pomocą tabel bazy danych. Nowi programiści Django będą mogli zaimplementować funkcję wyszukiwania na swojej stronie internetowej po przeczytaniu tego samouczka.