Джанго

Як побудувати базовий пошук сайту Django?

Як побудувати базовий пошук сайту Django?

Окремий вміст будь-якого веб-сайту зазвичай отримується користувачами за допомогою пошуку Google. Однак, якщо ця опція пошуку впроваджена на веб-сайті, то користувачі можуть легко знайти бажаний вміст на веб-сайті, не використовуючи пошук Google ... Ще однією перевагою додавання опції пошуку на веб-сайті є те, що розробник може правильно керувати результатами пошуку. Це означає, що він може контролювати, який вміст сайту відображатиметься чи ні. Цей підручник покаже процес впровадження основного пошуку на сайті Django.

Передумови:

Перш ніж відпрацювати сценарій цього підручника, ви повинні виконати наступні завдання:

  1. Встановіть Django версії 3+ на Ubuntu 20+ (бажано)
  2. Створіть проект Django
  3. Запустіть сервер Django, щоб переконатися, що він працює належним чином чи ні.

Налаштування програми Django:

Виконайте наступну команду, щоб створити програму Django з назвою searchapp.

$ python3 керувати.py startapp searchchapp

Виконайте наступну команду, щоб створити користувача для доступу до бази даних Django. Якщо ви створили користувача раніше, тоді вам не потрібно запускати команду.

$ python3 керувати.py створюєкористувача

Додайте назву програми в частину налаштувань INSTALLED_APP.файл py.

INSTALLED_APPS = [
..
'searchchapp'
]

Створіть папку з іменами шаблони всередині папки searchchapp і встановіть розташування шаблону програми в розділі ШАБЛОНИ налаштувань.файл py.

ШАБЛОНИ = [

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

Створення моделей:

Змініть моделі.py з таким сценарієм. Тут було визначено два класи для створення двох реляційних таблиць із назвами типів книг та книг. Поле типу таблиці книг - це зовнішній ключ, який з’явиться у таблиці типів книг.

моделі.py

# Імпортувати необхідні модулі
від django.моделі імпорту db
від django.URL-адреси зворотного імпорту
# Створіть модель книги типу gor
клас Книжковий тип (моделі.Модель):
btype = моделі.CharField (max_length = 100, унікальний = True)
клас Мета:
впорядкування = ('btype',)
# Створити модель gor book
клас Книга (моделі.Модель):
book_name = моделі.CharField (макс. Довжина = 150)
ім'я автора = моделі.CharField (макс. Довжина = 150)
тип = моделі.ForeignKey (Тип книги, on_delete = моделі.КАСКАД)
ціна = моделі.FloatField ()
публікація = моделі.CharField (макс. Довжина = 100)
клас Мета:
ordering = ('book_name',)
def __str __ (self):
повернути себе.ім'я книги
def get_url (self):
повернути реверс ('book_detail', args = [self.id])

Створення шаблонів для пошуку:

Для створення функції пошуку, показаної в цьому посібнику, потрібно три файли HTML. Це book_list.html, book_detail.html і пошук.html. Список_книг.html відобразить всі записи з таблиці книг. Детальна інформація про книгу.html відображатиме деталі певної книги. Пошук.html покаже результат пошуку після подання форми пошуку.

список_книг.html



Список книг










% if type% type.назва % else% Список книг % endif%











% для x у книзі%

x.ім'я книги


від x.ім'я автора


$ x.ціна




% endfor%



book_detail.html





книга.ім'я книги






книга.ім'я книги




Автор: книга.ім'я автора


Тип: type


Публікація: книга.публікація


Ціна: $ книга.ціна







пошук.html



Результат пошуку









% якщо запит%


% з результатами.зарахувати як загальні_результати%
Знайдено total_results результат total_results | pluralize
% endwith%


% для c у результатах%

c.ім'я книги


c.ім'я автора


% порожній%

Нічого не знайдено.


% endfor%
% endif%






Створити функції перегляду:

Змінити подання.py з таким сценарієм. У сценарії визначено три функції. Функція book_list () відображатиме book_list.файл HTML. Функція book_detail () відображатиме book_detail.html. Функція search () здійснить пошук записів на основі даних, поданих пошуковою формою, і відобразить результат у пошуку.html.

погляди.py

# Імпортувати необхідні модулі
від django.ярлики імпорту візуалізації, get_object_or_404
від .моделі імпорту книг, типів книг
від django.дб.моделі імпорту Q
# Визначте функцію для відображення всіх книг
def book_list (запит):
book = Книга.об'єктів.всі ()
повернути візуалізацію (запит, 'book_list.html ', ' book ': book)
# Визначте функцію для відображення конкретної книги
def book_detail (запит, ідентифікатор):
book = get_object_or_404 (Book, id = id)
типи = Тип книги.об'єктів.всі ()
t = типи.get (id = book.типу.ідентифікатор)
повернути візуалізацію (запит, 'book_detail.html ', ' book ': book,' type ': t.btype)
# Визначте функцію пошуку книги
пошук пошуку (запит):
результати = []
за запитом.метод == "ОТРИМАТИ":
запит = запит.ОТРИМАТИ.get ('пошук')
якщо запит == ":
query = 'Немає'
результати = Книга.об'єктів.фільтр (Q (ім'я книги__контенти = запит) | Q (ім'я автора__контенти = запит) | Q (ціна__контенти = запит))
повернути візуалізацію (запит, 'пошук.html ', ' запит ': запит,' результати ': результати)

Встановіть шляхи для функцій перегляду викликів:

Змініть URL-адреси.py проекту Django з наступним сценарієм. У сценарії визначено чотири шляхи. Шлях 'admin /' використовується для відкриття адміністративної інформаційної панелі Django. Порожній шлях (") використовується для виклику функції book_list (). '/ 'шлях використовується для виклику функції book_detail (). Шлях 'search /' використовується для виклику функції search ().

URL-адреси.py

# Імпортувати модуль адміністратора
від django.внести імпорт адміністратора
# Імпорт модуля шляху
від django.шлях імпорту URL-адрес
# Імпорт подання
з переглядів імпорту searchchapp
# Визначте шляхи
urlpatterns = [
path ('admin /', адміністратор.сайт.URL-адреси),
шлях (", перегляди.book_list, name = 'book_list'),
path ('/', перегляди.book_detail, name = 'book_detail'),
path ('пошук /', перегляди.search, name = 'пошук'),
]

Запустіть програму з браузера:

Виконайте таку команду, щоб запустити сервер Django.

$ python3 керувати.py runserver

Запустіть наступну URL-адресу з будь-якого браузера, щоб відобразити список книг із таблиці.

http: // localhost: 8000

Якщо користувач клацне на посилання, “PHP і MySQL для динамічних веб-сайтів”, тоді деталі цієї книги з’являться у браузері.

Якщо користувач здійснює пошук за словом, фізикою в браузері, тоді в браузері відображатиметься такий результат пошуку.

Висновок:

Додаток Django з базовою опцією пошуку було реалізовано в цьому посібнику за допомогою таблиць баз даних. Нові розробники Django зможуть впровадити функцію пошуку на своєму веб-сайті після прочитання цього посібника.

HD Remastered Games для Linux, які раніше ніколи не випускали Linux
Багато розробників і видавців ігор випускають HD-ремастер старих ігор, щоб продовжити життя франшизи. Будь ласка, шанувальники просять сумісність із с...
Як використовувати AutoKey для автоматизації ігор Linux
AutoKey - це утиліта автоматизації робочого столу для Linux та X11, запрограмована на Python 3, GTK та Qt. Використовуючи його сценарії та функціональ...
How to Show FPS Counter in Linux Games
Linux gaming got a major push when Valve announced Linux support for Steam client and their games in 2012. Since then, many AAA and indie games have m...