Как создать простую поисковую систему с помощью Flask

Привет ребята! Это мой первый раз, когда я пишу на Medium. Что я собираюсь сделать здесь, так это написать серию статей, чтобы рассказать о том, как создать поисковую систему на основе электронных таблиц, которая принимает пользовательский ввод и возвращает результат, найденный в формате файла csv, xlxs с использованием Flask и других библиотек. . В этой статье мы обсудим, как составить общую картину и как закодировать нашу домашнюю страницу.

Поисковик использовал следующий пакет:

  • Flask (для сборки ядра поисковой системы)
  • Pandas (Pandas идеально подходит для работы с электронными таблицами)
  • Gspread (для извлечения электронной таблицы из листа Google)

Большая фотография

Первый шаг — самый важный шаг, мы должны знать, что мы будем делать, чтобы уменьшить повторение шагов. Поэтому в начале каждого проекта я всегда сначала рисую большую картину, а затем решаю, как закончить этот проект.

Что нужно поисковику?

Поисковая система должна знать, что ищет пользователь, поэтому мы даем домашней странице поле ввода, и после того, как пользователь вводит запрос, у нас должен быть способ позволить пользователю отправить запрос обратно на сервер «хм…. давайте добавим кнопку отправки. » проблема решена

Как отобразить результаты?

Электронная таблица — это просто таблица, в которой хранится информация, но в другой форме данных, поэтому я хотел бы рассматривать ее как таблицу в html (используя тег ‹table› для отображения результата). Для некоторых пользователей они хотят распечатать результат для какой-то конкретной цели, поскольку наша работа программиста не только создавать вещи, но и выполнять требования клиента.

Итак, это общая картина нашего проекта, давайте посмотрим, что нам нужно

  • Домашняя страница, на которой пользователь может ввести запрос
  • Страница результатов для отображения результата

После того, как мы набросали внешний вид внешнего интерфейса, мы переходим к решению того, как работает серверная часть.

Что делает поисковик?

  • Принимает пользовательский ввод
  • Возвращает результат
  • Распечатать
  1. Первый процесс выполняется прямо на главной странице, поэтому мы позволяем основному маршруту («/») делать эту работу за нас.
  2. Второй процесс — страница возвращает результат после получения ввода пользователя, поэтому просто позвольте маршруту («/search») обрабатывать эту процедуру поиска.
  3. Последним процессом является распечатка результатов. Мы добавляем еще один маршрут для обработки этого задания («/print»). Я объясню позже, зачем нам нужен этот маршрут.

В итоге мы получили следующую файловую структуру для нашего проекта

SearchEngine |__ templates |_____ index.html |_____ search.html |_____ print.html |_main.py

Давай сделаем это

index.html

Он имеет поле ввода 2 элементов и кнопку отправки на основе этого требования, мы напишем index.html, как показано ниже.

<!DOCTYPE html> <head> <title>Simple Search Engine</title> </head> <body> <form action=»/search» method=»POST»> {{form.csrf_token}} {{form.ids}} {{form.submit}} </form> </body>

{{form.csrf_token}}

{{form.id}}

{{форма.отправить}}

Это элементы из WTForm, потому что мы используем WTForm в качестве нашей основной библиотеки форм.

Базовая форма

Переходя к нашей форме, как я уже говорил, я буду использовать WTForm для рендеринга этой формы. Согласно документу WTForm, «WTForms — это гибкая библиотека проверки и рендеринга форм для веб-разработки на Python. Он может работать с любым веб-фреймворком и механизмом шаблонов, который вы выберете».

class BasicForm(FlaskForm): ids = StringField(«ID»,validators=[DataRequired()]) submit = SubmitField(«Submit»)

ids и submit — это имена наших полей, которые будут отправлены обратно из браузера в формате {«ids», «values», «submit», «Submit»}. Это важно отметить, потому что позже мы будем использовать этот способ для получения значения от пользователя.

Основной маршрут @app.route («/»)

@app.route(«/»,methods =[‘POST’,’GET’]) def main(): form = BasicForm() return render_template(«index.html»,form = form)

Маршрут декоратора сообщает, какой URL-адрес должен запускать нашу функцию (которая запускает функцию main() в приведенной выше ситуации). основная функция инициализирует экземпляр BasicForm и передает его в render_template в качестве переменной. Мы планируем, что «index.html» будет нашей домашней страницей, поэтому render_template должен включать «index.html».

Это все, что нам нужно для домашней страницы, добавьте следующий код и запустите из команды.

if __name__ == «__main__»: app.run(debug=True)

запустить из команды

python main.py

Вот она, наша домашняя страница. Я позволю этой статье закончиться как часть 1 нашей серии, потому что есть еще много вещей, о которых можно поговорить, если я просто запишу все и опубликую всего в 1 статье, читатели могут легко заскучать. В ближайшие несколько дней я сделаю все возможное, чтобы закончить нашу серию и поделиться с вами, ребята. Вторая часть будет через 3 дня. Если в моей статье есть какие-либо ошибки, которые вас утомили, пожалуйста, оставьте комментарий, чтобы сообщить мне об этом. Спасибо за чтение

Источник: ledsshop.ru

Стиль жизни - Здоровье!