Flask с нуля: первое веб-приложение на Python за 17 минут
Пошаговое руководство по созданию первого веб-приложения на Flask: установка, маршруты, режим отладки и структура проекта.
Для AI-агентов и LLM
Экстракт доступен в структурированном Markdown. Скачать .md · JSON API · Site index
💡 Ключевые тезисы (10)
1 Flask — микрофреймворк, идеальный для старта #
2 Минимальное приложение Flask — всего 5 строк кода #
3 Маршруты определяются через декораторы #
4 Один обработчик может иметь несколько маршрутов #
5 Два способа запуска Flask-приложения #
6 Режим отладки автоматически перезагружает сервер #
7 Виртуальные окружения — обязательная практика #
8 Переменная __name__ определяет контекст запуска #
9 localhost и 127.0.0.1 — одно и то же #
10 Просмотр исходного кода страницы — инструмент отладки #
Flask с нуля: первое веб-приложение на Python за 17 минут
Спикер: Corey Schafer | Длительность: 17:08
Транскрипт
Введение: что будем строить
В этой серии видео мы создадим полноценное веб-приложение на фреймворке Flask. Это будет блог-платформа, где разные пользователи могут создавать посты. Приложение включает систему управления пользователями: регистрацию, авторизацию, сброс пароля по email. Пользователи смогут обновлять профиль, загружать аватары (с автоматическим ресайзом на сервере), создавать, редактировать и удалять посты.
Построение такого приложения — отличный способ изучить фреймворк, потому что придётся работать с базами данных, формами, файловой системой, отправкой email и многим другим.
Установка Flask
Установка выполняется через pip. Рекомендуется использовать виртуальное окружение для изоляции зависимостей проекта:
pip install flask
Проверка установки — открыть интерпретатор Python и выполнить import flask. Если ошибок нет — всё установлено корректно.
Создание проекта
Создаём директорию проекта и в ней файл flaskblog.py. Минимальный код приложения:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return '<h1>Home Page</h1>'
Переменная __name__ передаётся в конструктор Flask, чтобы фреймворк знал, где искать шаблоны и статические файлы.
Запуск через flask run
Необходимо установить переменную окружения:
export FLASK_APP=flaskblog.py # Mac/Linux
set FLASK_APP=flaskblog.py # Windows
flask run
Сервер запустится на http://127.0.0.1:5000 (или http://localhost:5000).
Режим отладки
Без debug mode каждое изменение кода требует перезапуска сервера. Включение:
export FLASK_DEBUG=1
flask run
Теперь сервер автоматически перезагружается при сохранении файлов.
Альтернативный запуск через Python
Можно добавить в конец файла блок условного запуска:
if __name__ == '__main__':
app.run(debug=True)
И запускать напрямую: python flaskblog.py.
Добавление маршрутов
Новые страницы создаются добавлением маршрутов с декораторами:
@app.route('/about')
def about():
return '<h1>About Page</h1>'
Можно привязать несколько URL к одной функции:
@app.route('/')
@app.route('/home')
def home():
return '<h1>Home Page</h1>'
Практические задания
Задание 1: Установка Flask и проверка
Установите Flask командой pip install flask. Откройте интерпретатор Python и выполните import flask — если ошибок нет, установка прошла успешно. Создайте отдельную директорию для проекта и откройте её в вашем текстовом редакторе.
Задание 2: Минимальное приложение
Создайте файл flaskblog.py с минимальным кодом: импорт Flask, создание экземпляра app, один маршрут '/' возвращающий текст. Запустите через переменные окружения и откройте localhost:5000 в браузере. Убедитесь, что текст отображается.
Задание 3: Режим отладки
Включите debug mode и протестируйте горячую перезагрузку: измените текст, сохраните файл и обновите страницу без перезапуска сервера. Попробуйте оба способа запуска — через flask run и через python напрямую.
Задание 4: Страница «О проекте»
Создайте маршрут /about с отдельной функцией-обработчиком, возвращающей HTML с заголовком. Проверьте, что обе страницы работают. Попробуйте перейти на несуществующий маршрут и изучите ответ 404.
Задание 5: Множественные маршруты
Добавьте к домашней странице второй декоратор @app.route('/home'), чтобы и / и /home вели на одну страницу. Проверьте оба URL в браузере.
Задание 6: Эксперименты с HTML
Замените простой текст на HTML-код с разными тегами: h1, p, ul/li, a. Просмотрите исходный код страницы в браузере. Обратите внимание, насколько неудобно писать HTML прямо в Python-коде — это мотивация для изучения шаблонов в следующем уроке.
Лучшие цитаты
«Flask — это отличный микрофреймворк, который действительно делает работу с серверными веб-приложениями приятной» — Corey Schafer
«Создание подобного приложения — отличный способ изучить все тонкости фреймворка, потому что нам придётся работать с базами данных, пользовательским вводом из форм, сохранением картинок и отправкой писем» — Corey Schafer
«Декораторы — это просто способ добавить дополнительную функциональность к существующим функциям» — Corey Schafer
«Это работающий веб-сервер, он встроен прямо в Flask, и его нужно оставить запущенным, пока вы просматриваете свой сайт» — Corey Schafer
«Было бы очень неудобно каждый раз останавливать и перезапускать веб-сервер при каждом маленьком изменении» — Corey Schafer
«Всегда хорошая идея — разделять разные проекты в их собственные виртуальные окружения» — Corey Schafer
«Декораторы могут быть запутанной темой, но вам не обязательно понимать, как они работают, чтобы использовать Flask» — Corey Schafer
«Если мы хотим, чтобы несколько маршрутов обрабатывались одной функцией, достаточно просто добавить ещё один декоратор» — Corey Schafer
🏋️ Практикум
Установка Flask и проверка работоспособности
Установите Flask командой pip install flask. Откройте интерпретатор Python и выполните import flask — если ошибок нет, установка прошла успешно. Создайте отдельную директорию для проекта и откройте её в вашем текстовом редакторе.
Создание минимального Flask-приложения
Создайте файл flaskblog.py с минимальным кодом: импорт Flask, создание экземпляра app, один маршрут '/' возвращающий текст. Запустите через переменные окружения (export FLASK_APP=flaskblog.py && flask run) и откройте localhost:5000 в браузере. Убедитесь, что текст отображается.
Включение режима отладки и тестирование горячей перезагрузки
Установите переменную FLASK_DEBUG=1 и перезапустите сервер. Измените текст, возвращаемый маршрутом, сохраните файл и обновите страницу в браузере без перезапуска сервера. Убедитесь, что изменения применились автоматически. Попробуйте также альтернативный запуск через if __name__ == '__main__': app.run(debug=True).
Добавление страницы «О проекте»
Создайте второй маршрут /about с отдельной функцией-обработчиком. Верните HTML с заголовком h1. Проверьте, что обе страницы ('/' и '/about') работают. Попробуйте перейти на несуществующий маршрут и изучите ответ 404 в терминале.
Множественные маршруты для одного обработчика
Добавьте к домашней странице второй декоратор @app.route('/home'), чтобы и '/' и '/home' вели на одну страницу. Проверьте оба URL в браузере. Подумайте, в каких случаях это может быть полезно в реальном проекте — например, редирект со старого URL на новый.
Эксперимент с HTML-разметкой в ответах
Замените простой текст в return на HTML-код с разными тегами: h1, p, ul/li. Обновите страницу и просмотрите исходный код через правый клик → «Просмотр исходного кода». Обратите внимание, как браузер рендерит HTML. Это поможет понять, зачем в следующих уроках понадобятся шаблоны.
💬 Цитаты (8)
«Flask — это отличный микрофреймворк, который действительно делает работу с серверными веб-приложениями приятной (Flask is an excellent micro framework that really makes it enjoyable to work with these back-end web applications)» #
«Создание подобного приложения — отличный способ изучить все тонкости фреймворка, потому что нам придётся работать с базами данных, пользовательским вводом из форм, сохранением картинок и отправкой писем (building an application like this is a great way to learn the ins and outs of a framework)» #
«Декораторы — это просто способ добавить дополнительную функциональность к существующим функциям (decorators are just a way to add additional functionality to existing functions)» #
«Это работающий веб-сервер, он встроен прямо в Flask, и его нужно оставить запущенным, пока вы просматриваете свой сайт (this is a running web server this actually comes with flask itself and you have to leave this running while you're viewing your site)» #
«Скорее всего при разработке сайта вы будете вносить множество изменений, и было бы очень неудобно каждый раз останавливать и перезапускать веб-сервер при каждом маленьком изменении (it would be a major pain to have to shut down and restart the web server each time you make a small change)» #
«Всегда хорошая идея — разделять разные проекты в их собственные виртуальные окружения (it's always a good idea to separate different projects into their own virtual environments)» #
«Декораторы могут быть запутанной темой, но вам не обязательно понимать, как они работают, чтобы использовать Flask (decorators can be a confusing topic but you don't really need to understand how they work in order to use flask)» #
«Если мы хотим, чтобы несколько маршрутов обрабатывались одной функцией, достаточно просто добавить ещё один декоратор (if we ever wanted to have multiple routes handled by the same function then it's as simple as just adding another decorator)» #
Популярное в категории
Похожие по теме
Читать далее
Corey Schafer
Pandas для анализа данных: установка, загрузка данных и первые шаги в Jupiter Notebook
Corey Schafer
Поделитесь с коллегами