Привет ребята! Это мой первый раз, когда я пишу на Medium. Что я собираюсь сделать здесь, так это написать серию статей, чтобы рассказать о том, как создать поисковую систему на основе электронных таблиц, которая принимает пользовательский ввод и возвращает результат, найденный в формате файла csv, xlxs с использованием Flask и других библиотек. . В этой статье мы обсудим, как составить общую картину и как закодировать нашу домашнюю страницу.
Поисковик использовал следующий пакет:
- Flask (для сборки ядра поисковой системы)
- Pandas (Pandas идеально подходит для работы с электронными таблицами)
- Gspread (для извлечения электронной таблицы из листа Google)
Большая фотография
Первый шаг — самый важный шаг, мы должны знать, что мы будем делать, чтобы уменьшить повторение шагов. Поэтому в начале каждого проекта я всегда сначала рисую большую картину, а затем решаю, как закончить этот проект.
Что нужно поисковику?
Поисковая система должна знать, что ищет пользователь, поэтому мы даем домашней странице поле ввода, и после того, как пользователь вводит запрос, у нас должен быть способ позволить пользователю отправить запрос обратно на сервер «хм…. давайте добавим кнопку отправки. » проблема решена
Как отобразить результаты?
Электронная таблица — это просто таблица, в которой хранится информация, но в другой форме данных, поэтому я хотел бы рассматривать ее как таблицу в html (используя тег ‹table› для отображения результата). Для некоторых пользователей они хотят распечатать результат для какой-то конкретной цели, поскольку наша работа программиста не только создавать вещи, но и выполнять требования клиента.
Итак, это общая картина нашего проекта, давайте посмотрим, что нам нужно
- Домашняя страница, на которой пользователь может ввести запрос
- Страница результатов для отображения результата
После того, как мы набросали внешний вид внешнего интерфейса, мы переходим к решению того, как работает серверная часть.
Что делает поисковик?
- Принимает пользовательский ввод
- Возвращает результат
- Распечатать
- Первый процесс выполняется прямо на главной странице, поэтому мы позволяем основному маршруту («/») делать эту работу за нас.
- Второй процесс — страница возвращает результат после получения ввода пользователя, поэтому просто позвольте маршруту («/search») обрабатывать эту процедуру поиска.
- Последним процессом является распечатка результатов. Мы добавляем еще один маршрут для обработки этого задания («/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 дня. Если в моей статье есть какие-либо ошибки, которые вас утомили, пожалуйста, оставьте комментарий, чтобы сообщить мне об этом. Спасибо за чтение
Источник: