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

Python Flask, вероятно, является одним из самых простых фреймворков для новичков в Python для веб-разработки. В этой статье мы попытаемся как можно проще показать, как мы можем создать форму в Python flask, запрашивая имя и адрес электронной почты, и как эти данные формы можно передать обратно в наш код Python.

Начнем с простого приложения Flask

app.py

from flask import *
app = Flask(__name__)
@app.route("/")
def home():
    return render_template("home.html")
if __name__ == "__main__":
    app.run()

шаблоны/home.html

<h1>this is home.html</h1>

Примечание: не забудьте поместить home.html в папку templates.

Добавление входных данных в наш HTML-файл

Здесь мы хотим добавить поля ввода в наш HTML-файл, home.html, чтобы запросить у нашего пользователя имя и адрес электронной почты. Вот как примерно должна выглядеть наша веб-страница:

шаблоны/home.html

<h1>
    This is home.html
</h1>
<form method="post">
  Name: <input name="name"/>
  <br/><br/>
  Email: <input name="email"/>
  <br/><br/>
  <button type="submit">Submit</button>
</form>

Что нужно помнить:

  • Поместите элементы ввода в форму
  • Установите метод формы как "post"
  • Добавьте атрибуты name к нашим полям ввода — эти атрибуты name будут тем, как Python Flask идентифицирует наши поля ввода.
  • Добавьте кнопку отправки с помощью type="submit"

Если мы добавим их, мы сможем увидеть недавно добавленные поля ввода при посещении нашей конечной точки /. Тем не менее, это еще не будет иметь никакой реальной функциональности.

Связывание этого с Python Flask

@app.route("/", methods=["GET", "POST"])
def home():
    if request.method == "POST":
        print(request.form["name"])
        print(request.form["email"])
        return
    return render_template("home.html")

Во-первых, не забудьте добавить methods=["GET", "POST"] в наш декоратор app.route. Когда мы нажимаем кнопку отправки в нашей форме, она отправляет запрос POST на наш сервер Python Flask. Аргумент ключевого слова methods=["GET", "POST"] позволяет нашей функции home обрабатывать запросы GET и POST.

Далее добавим оператор if if request.method == "POST". Это происходит, когда мы делаем POST-запрос к нашему бэкэнду Python Flask, что происходит, когда мы нажимаем кнопку отправки.

Вы можете думать о request.form как о словаре, содержащем набор пар ключ-значение, где ключи — это атрибуты name в наших полях ввода, а значения — это значения полей ввода (по сути, то, что мы вводим в поля ввода).

У нас есть 2 поля ввода, 1 с именем name и другое с именем email. request.form["name"] возвращает все, что мы вводим в поле ввода имени, а request.form["email"] возвращает все, что мы вводим в поле ввода электронной почты.

Тестирование нашей формы

Попробуйте ввести имя и адрес электронной почты в форму, затем нажмите кнопку «Отправить». Проверьте терминал, который вы использовали для запуска приложения Python Flask — имя и адрес электронной почты, которые вы ввели в форму, должны быть напечатаны там.

Что дальше

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

Пример ссылки на репозиторий



Заключение

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

Зарегистрируйтесь, используя мою ссылку здесь, чтобы читать неограниченное количество статей на Medium!

Если эта статья была для вас очень ценной, подумайте о том, чтобы угостить меня кофе — каждый маленький вклад будет очень ценен!

https://www.buymeacoffee.com/zlliu

Если вы хотите получать уведомления о моих публикациях, присоединитесь к моему списку рассылки.



Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.