Джанго

Как создать базовый поиск для сайта Django?

Как создать базовый поиск для сайта Django?

Конкретный контент любого сайта обычно извлекается пользователями через поиск Google. Однако, если этот параметр поиска реализован на веб-сайте, пользователи могут легко найти желаемый контент на сайте без использования поиска Google ... Еще одно преимущество добавления параметра поиска на веб-сайт заключается в том, что разработчик может правильно управлять результатами поиска. Это означает, что он может контролировать, какой контент на сайте будет отображаться или нет. В этом руководстве будет показан процесс реализации базового поиска на сайте Django.

Предпосылки:

Перед тем, как практиковать сценарий этого руководства, вам необходимо выполнить следующие задачи:

  1. Установите Django версии 3+ на Ubuntu 20+ (желательно)
  2. Создайте проект Django
  3. Запустите сервер Django, чтобы проверить, работает ли сервер правильно или нет.

Настройте приложение Django:

Выполните следующую команду, чтобы создать приложение Django с именем searchchapp.

$ python3 manage.py startapp searchchapp

Выполните следующую команду, чтобы создать пользователя для доступа к базе данных Django. Если вы создали пользователя раньше, вам не нужно запускать команду.

$ python3 manage.py создает суперпользователя

Добавьте название приложения в INSTALLED_APP часть настроек.py файл.

INSTALLED_APPS = [

"поисковик"
]

Создайте папку с именем templates внутри папки searchchapp и укажите местоположение шаблона приложения в части настроек TEMPLATES.py файл.

ШАБЛОНЫ = [

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

Создать модели:

Измените модели.py файл со следующим скриптом. Здесь были определены два класса для создания двух реляционных таблиц с именами booktypes и books. Поле типа таблицы книг - это внешний ключ, который появится из таблицы типов книг.

модели.ру

# Импортировать необходимые модули
из джанго.модели импорта БД
из джанго.обратный импорт URL
# Создать модель gor booktype
класс Booktype (модели.Модель):
btype = модели.CharField (max_length = 100, unique = True)
класс Мета:
заказ = ('btype',)
# Создать модель горбука
классная книга (модели.Модель):
book_name = модели.CharField (max_length = 150)
author_name = модели.CharField (max_length = 150)
type = модели.ForeignKey (Booktype, on_delete = модели.КАСКАД)
цена = модели.FloatField ()
публикация = модели.CharField (max_length = 100)
класс Мета:
заказ = ('имя_книги',)
def __str __ (сам):
вернуть себя.book_name
def get_url (сам):
return reverse ('book_detail', args = [self.я бы])

Создать шаблоны для поиска:

Для создания функции поиска, показанной в этом руководстве, вам потребуются три файла HTML. Это book_list.html, book_detail.html и поиск.html. Book_list.html отобразит все записи из таблицы книг. Книга_детейл.html отобразит подробную информацию о конкретной книге. Поиск.html отобразит результат поиска после отправки формы поиска.

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



Список книг










% if type% type.name % else% Список книг % endif%











% для x в книге%

Икс.book_name


автор: x.имя автора


$ x.цена




% endfor%



book_detail.html





книга.book_name






книга.book_name




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


Тип: type


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


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







поиск.html



Результат поиска









% if query%


% с результатами.считать как total_results%
Найден total_results результат total_results | pluralize
% endwith%


% for c в результатах%

c.book_name


c.имя автора


% пустой %

результаты не найдены.


% endfor%
% endif%






Создание функций просмотра:

Измените представления.py файл со следующим скриптом. В скрипте определены три функции. Функция book_list () отобразит book_list.html файл. Функция book_detail () отобразит book_detail.html. Функция search () будет искать записи на основе данных, отправленных формой поиска, и отображать результат в поиске.html.

взгляды.ру

# Импортировать необходимые модули
из джанго.ярлыки import render, get_object_or_404
из .импорт моделей Book, Booktype
из джанго.db.модели импорт Q
# Определить функцию для отображения всех книг
def book_list (запрос):
book = Книга.объекты.все()
вернуть рендер (запрос, 'book_list.html ', ' book ': book)
# Определить функцию для отображения конкретной книги
def book_detail (запрос, идентификатор):
book = get_object_or_404 (Книга, id = id)
types = Тип книги.объекты.все()
t = типы.получить (id = книга.тип.я бы)
вернуть рендер (запрос, 'book_detail.html ', ' book ': book,' type ': t.btype)
# Определить функцию для поиска книги
def поиск (запрос):
результаты = []
если запрос.метод == "ПОЛУЧИТЬ":
query = запрос.ПОЛУЧАТЬ.получить ('поиск')
если запрос == ":
query = 'Нет'
results = Книга.объекты.фильтр (Q (имя_книги__icontains = запрос) | Q (имя_ автора__icontains = запрос) | Q (цена__icontains = запрос))
возврат рендера (запрос, 'поиск.html ', ' запрос ': запрос,' результаты ': результаты)

Задайте пути для вызова функций просмотра:

Измените URL-адреса.py-файл проекта Django со следующим скриптом. В скрипте определены четыре пути. Путь admin / используется для открытия административной панели Django. Пустой путь (") используется для вызова функции book_list (). '/ 'путь используется для вызова функции book_detail (). Путь search / используется для вызова функции search ().

URL-адреса.ру

# Импортировать админ-модуль
из джанго.contrib import admin
# Импортировать модуль пути
из джанго.путь импорта URL
# Импортировать представление
из поисковых просмотров
# Определить пути
urlpatterns = [
путь ('админ /', админ.сайт.URL-адреса),
путь (", просмотров.book_list, name = 'book_list'),
путь ('/', просмотры.book_detail, name = 'book_detail'),
путь ('поиск /', просмотры.search, name = 'search'),
]

Запустите приложение из браузера:

Выполните следующую команду, чтобы запустить сервер Django.

$ python3 manage.py runserver

Запустите следующий URL-адрес из любого браузера, чтобы отобразить список книг из таблицы.

http: // локальный: 8000

Если пользователь щелкнет ссылку «PHP и MySQL для динамических веб-сайтов», в браузере появятся сведения об этой книге.

Если пользователь ищет слово, физика в браузере, то в браузере отобразится следующий результат поиска.

Заключение:

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

Лучшие игры с командной строкой для Linux
Командная строка - не только ваш главный союзник при использовании Linux - она ​​также может быть источником развлечений, потому что вы можете использ...
Лучшие приложения для сопоставления геймпадов для Linux
Если вам нравится играть в игры на Linux с помощью геймпада вместо стандартной системы ввода с клавиатуры и мыши, для вас есть несколько полезных прил...
Полезные инструменты для геймеров Linux
Если вам нравится играть в игры на Linux, скорее всего, вы использовали приложения и утилиты, такие как Wine, Lutris и OBS Studio, для улучшения игров...