Первая программа на Flask
Первая программа на Flask
Flask — микрофреймворк: он даёт маршрутизацию и HTTP-слой, а базу данных, формы и авторизацию вы подключаете сами. В этом материале поднимаем приложение «Список задач»: HTML-страница, форма добавления и простой JSON API.
Обзор фреймворка: Flask. Шпаргалка: Справочник по Flask. Сравнение с Django: Django.
Подготовка окружения
python -m venv venv
# Windows:
venv\Scripts\activate
# macOS / Linux:
source venv/bin/activate
pip install flask
mkdir flask-todo && cd flask-todo
Структура проекта на старте:
flask-todo/
app.py
templates/
index.html
Минимальное приложение
Файл app.py:
from flask import Flask, render_template, request, redirect, url_for, jsonify
app = Flask(__name__)
app.config["SECRET_KEY"] = "dev-only-change-in-production"
tasks: list[dict] = []
_next_id = 1
def add_task(title: str) -> dict:
global _next_id
item = {"id": _next_id, "title": title.strip(), "done": False}
_next_id += 1
tasks.append(item)
return item
@app.get("/")
def index():
return render_template("index.html", tasks=tasks)
@app.post("/add")
def add():
title = request.form.get("title", "")
if title.strip():
add_task(title)
return redirect(url_for("index"))
@app.get("/api/tasks")
def api_list():
return jsonify(tasks)
@app.post("/api/tasks")
def api_create():
data = request.get_json(silent=True) or {}
title = str(data.get("title", "")).strip()
if not title:
return jsonify({"error": "title required"}), 400
return jsonify(add_task(title)), 201
if __name__ == "__main__":
app.run(debug=True)
Запуск:
python app.py
Откройте http://127.0.0.1:5000/.
Шаблон
templates/index.html:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Flask — задачи</title>
</head>
<body>
<h1>Мои задачи</h1>
<form method="post" action="{{ url_for('add') }}">
<input name="title" placeholder="Новая задача" required>
<button type="submit">Добавить</button>
</form>
<ul>
{% for t in tasks %}
<li>{{ t.title }}</li>
{% else %}
<li>Пока пусто</li>
{% endfor %}
</ul>
</body>
</html>
Flask использует Jinja2: {% %} — логика, {{ }} — вывод.
Проверка API
curl http://127.0.0.1:5000/api/tasks
curl -X POST http://127.0.0.1:5000/api/tasks \
-H "Content-Type: application/json" \
-d "{\"title\": \"Изучить Flask\"}"
Следующие шаги
| Задача | Расширение |
|---|---|
| Постоянное хранение | Flask-SQLAlchemy + SQLite |
| Валидация форм | Flask-WTF |
| Структура проекта | Application Factory и blueprints |
| Деплой | Gunicorn + Nginx; см. Веб-разработка и REST API на Python |
debug=True удобен только локально: при ошибке показывается интерактивная консоль — в production его отключают.См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Python как язык общего назначения - философия, ключевые свойства и области применения в современной разработке. Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Принципы, которые делают код понятным, поддерживаемым и расширяемым. Примеры реализации типовых приложений. Каждый пример сопровождается разбором ключевых концепций языка. Наверняка каждый новичок, решивший перейти в что-то стандартное в Python, открывает себе этот файл. Как устроен Python, что входит в комплект и какие есть реализации. Структурные каркасы для построения приложений, как они устроены. Фреймворки, библиотеки, инструменты сборки, среды выполнения, системы тестирования и специализированные платформы, объединённые общей философией ясности, простоты и гибкости. Что такое модули, как устроены механизмы импорта и загрузки. Управление изолированной средой и зависимостями проекта. История Python - ключевые этапы развития языка, сообщества и экосистемы инструментов. Философия Python не зафиксирована в официальных стандартах, но она глубоко интегрирована в язык, его стандартную библиотеку, документацию и культуру разработчиков.Python - язык общего назначения
Что требуется знать перед началом изучения языка программирования Python
Рекомендации по разработке на Python
Простые приложения на Python
Встроенный модуль builtins и типизация в Python
Архитектура интерпретатора Python
Фреймворки и библиотеки Python
Экосистема Python-приложений
Модули в Python
Виртуальные окружения и управление зависимостями
История языка Python
Философия Python - Zen of Python