Flask в Python
Flask превращает программу на Python в веб-сервер — и делает это на удивление просто.
Flask в Python
Flask — это лёгкая библиотека, которая превращает программу на Python в веб-сервер: она принимает HTTP-запросы от браузера и отправляет в ответ HTML-страницы. Установка — как у любой библиотеки:
pip install flask
Самое маленькое Flask-приложение
from flask import Flask
app = Flask(__name__)
@app.route("/")
def glavnaya():
return "Привет, мир!"
if __name__ == "__main__":
app.run(debug=True)
@app.route("/") говорит Flask: «когда браузер запросит адрес /, вызови функцию glavnaya() и отправь то, что она вернёт».Шаблоны — HTML с вставками Python
Возвращать HTML прямо строкой в Python неудобно. Flask использует движок шаблонов
Jinja2 — обычный HTML-файл, куда можно вставлять python-подобные
выражения в фигурных скобках {{ }}:
<h1>Мой список задач</h1>
<ul>
{% for zadacha in zadachi %}
<li>{{ zadacha }}</li>
{% endfor %}
</ul>
from flask import Flask, render_template
app = Flask(__name__)
zadachi = ["Выучить основы Python", "Собрать сайт на Flask"]
@app.route("/")
def glavnaya():
return render_template("index.html", zadachi=zadachi)
Динамические адреса
Часть адреса можно превратить в параметр функции — Flask сам передаст в неё нужное значение из URL:
@app.route("/privet/<imya>")
def privet(imya):
return render_template("privet.html", imya=imya)
/privet/Сергей, вы получите в переменной imya строку "Сергей" — Flask сам достаёт эту часть из адреса.Принимаем данные из формы
Чтобы пользователь мог что-то отправить на сервер (например, добавить задачу),
используется HTML-форма и маршрут, принимающий метод POST:
from flask import request, redirect, url_for
@app.route("/dobavit", methods=["POST"])
def dobavit():
novaya_zadacha = request.form.get("zadacha", "").strip()
if novaya_zadacha:
zadachi.append(novaya_zadacha)
return redirect(url_for("glavnaya"))
Полный проект
Всё вместе — маршруты, шаблоны, форма и статический CSS-файл — собрано в готовый мини-сайт «Список задач»:
📄 projects/flask/todo-app/app.py
python app.py в терминале внутри projects/flask/todo-app/, затем откройте http://127.0.0.1:5000/ в браузере.Добавьте в index.html строку, показывающую общее количество задач: {{ zadachi|length }}.
Добавьте маршрут /udalit/<int:indeks>, который удаляет задачу по её номеру в списке и делает редирект на главную.