Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Микрофреймворки Ключевые аспекты веб-разработки на Python

Backend Web-приложения большую часть времени обрабатывает запросы от frontend'а. Ответная реакция на запрос, как правило, зависит от того, какой был запрошен адрес и с каким HTTP-глаголом. Чаще всего используются POST- и GET-запросы. Подробнее о глаголах протокола HTTP вы узнаете в соответствующем курсе, пока же достаточно понимать, что глагол — такая же часть запроса, как и URL (тот самый адрес, который вы видите в браузере).

Практически в любом Web-приложении нужно

  1. Принять запрос.
  2. Определить, какой обработчик должен выполниться.
  3. Выполнить обработчик и подготовить ответ.
  4. Вернуть ответ клиенту.

Этот набор действий практически не меняется от проекта к проекту, поэтому его и выносят во фреймворк. При этом типичный фреймворк (не только Web-фреймворк) устроен так, что работает в режиме "не звоните нам, мы сами вам позвоним": пользователь фреймворка встраивает свои функции в готовый каркас, а фреймворк сам решает, когда и какие функции вызывать. Этим фреймворк отличается от обычной библиотеки — последние обычно отдают контроль пользователю.

Давайте рассмотрим пример кода, построенного с использованием web-фреймворка:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

Эти пять строчек — готовое Web-приложение, пусть и содержащее всего один обработчик hello_world. Обратите внимание на то, насколько код обработчика лаконичен: обработчик возвращает строку и вообще является максимально простой функцией. Вся "магия" (в смысле "автоматика") сокрыта в декораторе @app.route, который привязывает обработчик к конкретному пути (route).

В HTTP-запросе путь — это часть адреса, идущая следом за доменным именем. В адресе https://foo.bar/this/is/a/path путём будет строка /this/is/a/path. В примере выше hello_world отвечает на запросы по пути '/' — это так называемый "корень" ("root"), минимально возможный путь (в адресе "https://hexlet.io/" завершающий слэш — тот самый "корень" сайта, т.е. его главная страница).

Рассмотренный пример демонстрирует использование микрофреймворка Flask. Приставка "Микро-" в отношении Web-фреймворка обычно говорит о том, что фреймворк берёт на себя только маршрутизацию (routing) (сопоставление путей с обработчиками) и, возможно, немного помогает с формированием простых ответов (скажем, текстовых как в примере выше).

"Микроскопичность" часто связана ещё и с тем, что небольшие web-приложения, реализованные с помощью микрофреймворков, умещаются в один файл с кодом! А вот большие фреймворки вроде Django уже требуют тщательного распределения кода по пакетам и модулям в соответствии со строгими правилами.

И если к микрофреймворку вы, скорее всего будете со временем добавлять библиотеки, добавляющие приложению функциональности, то большой фреймворк обычно уже укомплектован кодом, как говорят, на все случаи жизни.

Такое разделение на "разумный минимум" и "всё сразу (и сразу по строгим правилам)" сказывается на простоте изучения: с микрофреймворком сильно проще стартовать! А большие фреймворки можно будет освоить позже, когда вы освоитесь с основами Web-разработки и решите создать что-то большое и сложное!

Вы могли бы подумать, что микрофреймворки — это нечто "игрушечное" или "учебное", но я предостерегаю вас от подобного вывода! Микрофреймворки применяются в реальных проектах, в том числе и больших. Разница между большим фреймворком и микрофреймворком с дополнительными библиотеками может быть минимальна. Часто выбор между тем и другим вообще зависит от вкусовых предпочтений разработчика :)


Самостоятельная работа

Прочитайте главу "A Minimal Application" руководства по быстрому старту с Flask и добейтесь того, чтобы приложение запускалось на вашей машине локально и сайт открывался в браузере.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Для полного доступа к курсу нужна профессиональная подписка

Профессиональная подписка откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнения
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 120 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
22 сентября 8 месяцев

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»