Конкретный контент любого сайта обычно извлекается пользователями через поиск Google. Однако, если этот параметр поиска реализован на веб-сайте, пользователи могут легко найти желаемый контент на сайте без использования поиска Google ... Еще одно преимущество добавления параметра поиска на веб-сайт заключается в том, что разработчик может правильно управлять результатами поиска. Это означает, что он может контролировать, какой контент на сайте будет отображаться или нет. В этом руководстве будет показан процесс реализации базового поиска на сайте Django.
Предпосылки:
Перед тем, как практиковать сценарий этого руководства, вам необходимо выполнить следующие задачи:
- Установите Django версии 3+ на Ubuntu 20+ (желательно)
- Создайте проект Django
- Запустите сервер 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
book_detail.html
книга.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 (). '
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 смогут реализовать функцию поиска на своем веб-сайте после прочтения этого руководства.