Вы прочитали 2 из 3 бесплатных методичек сегодня
Безлимит →
Экстракт 04 мая 2018

Flask с нуля: первое веб-приложение на Python за 17 минут

Corey Schafer · Corey Schafer Верифицирован 17:08

Пошаговое руководство по созданию первого веб-приложения на Flask: установка, маршруты, режим отладки и структура проекта.

10 тезисов 6 заданий 8 цитат ⏱ 4 мин чтения 🎯 10 тезисов
YouTube Транскрипт Сохранить
Поделиться: TG WA VK X

Для AI-агентов и LLM

Экстракт доступен в структурированном Markdown. Скачать .md · JSON API · Site index

💡 Ключевые тезисы (10)

1 Flask — микрофреймворк, идеальный для старта #
Flask позиционируется как микрофреймворк, что делает его отличным выбором для изучения веб-разработки на Python. Он не перегружен абстракциями и позволяет быстро получить работающий результат. При этом фреймворк достаточно мощный для создания полноценных приложений с авторизацией, базами данных и загрузкой файлов.
2 Минимальное приложение Flask — всего 5 строк кода #
Для запуска веб-приложения достаточно импортировать класс Flask, создать экземпляр приложения и определить одну функцию-обработчик с декоратором маршрута. Переменная __name__ передаётся в конструктор Flask, чтобы фреймворк знал, где искать шаблоны и статические файлы.
3 Маршруты определяются через декораторы #
Декоратор @app.route('/path') привязывает URL-адрес к функции-обработчику. Функция возвращает содержимое страницы — текст или HTML. Декораторы скрывают сложную логику маршрутизации и позволяют сосредоточиться на бизнес-логике.
4 Один обработчик может иметь несколько маршрутов #
К одной функции можно привязать несколько декораторов @app.route. Например, и '/' и '/home' могут вести на одну и ту же домашнюю страницу. Это удобно для создания алиасов и поддержки обратной совместимости URL-адресов.
5 Два способа запуска Flask-приложения #
Первый способ — через команду flask run с установленными переменными окружения FLASK_APP и FLASK_DEBUG. Второй — напрямую через python flaskblog.py с блоком if __name__ == '__main__' и вызовом app.run(debug=True). Оба способа равноценны, но flask run предпочтительнее по документации.
6 Режим отладки автоматически перезагружает сервер #
Без режима отладки каждое изменение кода требует ручной остановки и перезапуска сервера. Включение debug mode (FLASK_DEBUG=1 или debug=True) позволяет серверу автоматически отслеживать изменения файлов и перезагружаться. Это критически важно для продуктивной разработки.
7 Виртуальные окружения — обязательная практика #
Каждый проект должен работать в изолированном виртуальном окружении, чтобы зависимости разных проектов не конфликтовали. Хотя Flask можно установить глобально, для реальных проектов это антипаттерн.
8 Переменная __name__ определяет контекст запуска #
Когда скрипт запускается напрямую, __name__ равен '__main__'. При импорте модуля __name__ равен имени модуля. Этот механизм используется и для передачи контекста Flask, и для условного запуска сервера разработки.
9 localhost и 127.0.0.1 — одно и то же #
Flask-сервер по умолчанию запускается на 127.0.0.1:5000. Адрес localhost — это алиас для 127.0.0.1. Оба варианта указывают на локальную машину и равноценны для доступа к приложению в браузере.
10 Просмотр исходного кода страницы — инструмент отладки #
В любом браузере можно просмотреть HTML-код страницы через правый клик → «Просмотр исходного кода». Это позволяет убедиться, что сервер возвращает именно тот HTML, который вы ожидаете, и быстро находить ошибки в разметке.

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

🏋️ Практикум

0 / 6 выполнено

Установка 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)» #

Похожие по теме

Читать далее

Pandas для анализа данных: установка, загрузка данных и первые шаги в Jupiter Notebook

Corey Schafer

Pandas для анализа данных: установка, загрузка данных и первые шаги в Jupiter Notebook

Corey Schafer

Понравился экстракт?
Подписывайтесь — лучшие материалы каждую неделю.
Telegram Дайджест →

Поделитесь с коллегами

Telegram ВКонтакте X / Twitter
Открыть в Telegram

Экстракт Знаний в Telegram

Экстракты и дистилляты из лучших YouTube-каналов — сразу после публикации.

Подписаться

Дайджест Экстрактов

Лучшие методички за неделю — каждый понедельник