Django

Jak zbudować podstawowe wyszukiwanie w witrynie Django?

Jak zbudować podstawowe wyszukiwanie w witrynie Django?

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:

  1. Zainstaluj Django w wersji 3+ na Ubuntu 20+ (najlepiej)
  2. Utwórz projekt Djangogo
  3. 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 searchapp

Uruchom 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żytkownik

Dodaj 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ły
z 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



Lista książek










% jeśli wpisz % wpisz.nazwa % else % Lista książek % endif %











% za x w książce %

x.nazwa_książki


przez x.imię autora


$x.Cena £




% endfor %



szczegóły_książki.html





książka.nazwa_książki






książka.nazwa_książki




Autor: książka.imię autora


Typ: typ


Publikacja: książka.opublikowanie


Cena: książka . USD.Cena £







Szukaj.html



Wynik wyszukiwania









% 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ły
z 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(). '/' ścieżka służy do wywołania funkcji book_detail(). Ścieżka 'search/' służy do wywołania funkcji search().

adresy URL.py

# Importuj moduł administracyjny
z 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 runserver

Uruchom 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.

AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...
Middle mouse button not working in Windows 10
The middle mouse button helps you scroll through long webpages and screens with a lot of data. If that stops, well you will end up using the keyboard ...
How to change Left & Right mouse buttons on Windows 10 PC
It's quite a norm that all computer mouse devices are ergonomically designed for right-handed users. But there are mouse devices available which are s...