Статья Автор: Деникина Н.В., Деникин А.В.

Формы и POST

Flask для школьниковГлава 5 из 10
SilverTests.ru · Курс веб-разработкиФормы и POST
Формы и POST

Пользователь отправляет данные — сервер их обрабатывает


После выполнения предыдущей главы у тебя есть base.html, список привычек выводится циклом из Python-списка.
Цель

Добавить форму на страницу. Обработать данные из формы на сервере через request.form. Понять метод POST и отличие от GET.

📝 Техзадание

На странице /habits появляется поле ввода и кнопка «Добавить». Вводишь «Йога» → нажимаешь → привычка появляется в списке. Данные хранятся на сервере в памяти.

1GET vs POST

До сих пор все наши запросы были GET — браузер просит страницу, сервер отдаёт. Но когда пользователь отправляет данные (форму, файл), используется POST.

  GET POST
Для чего Получить данные Отправить данные
Данные В URL (?name=Йога) В теле запроса (скрыты)
Пример Открыть страницу Отправить форму
2Схема: форма → сервер → redirect
💻 Форма
name=Йога
— POST /add →
request.form
🗃 Flask
добавляет в список
← redirect —
/habits
💻 Браузер
обновлённый список
3Код: обработчик на сервере
from flask import Flask, render_template, request, redirect

app = Flask(__name__)

habits_list = [ {"name": "Бег", "done": False}, {"name": "Чтение", "done": False}, ]

@app.route('/add', methods=['POST'])
def add_habit():
  name = request.form['habit_name'] # данные из формы
  if name.strip():
  habits_list.append({"name": name, "done": False})
  return redirect('/habits') # назад к списку
4Код: форма в шаблоне
<!-- добавить в habits.html внутри {% block content %} -->
<form method="POST" action="/add">
  <input type="text" name="habit_name" placeholder="Новая привычка">
  <button type="submit">Добавить</button>
</form>

name="habit_name" в HTML ↔ request.form['habit_name'] в Python. По этому имени Flask находит данные из формы.

Важно: methods=['POST'] обязателен. Без него Flask вернёт ошибку 405 (Method Not Allowed), потому что по умолчанию маршрут принимает только GET.

Обрати внимание: после добавления привычки страница перезагружается целиком (redirect). В главе 7 мы научимся обновлять данные без перезагрузки — через JavaScript.

© SilverTests.ru · Курс Flask для школьников · Глава 5 из 10
Печать