Привет ребята! Это мой первый раз, когда я пишу на 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 дня. Если в моей статье есть какие-либо ошибки, которые вас утомили, пожалуйста, оставьте комментарий, чтобы сообщить мне об этом. Спасибо за чтение