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

Бэкенд на Python Ключевые аспекты веб-разработки на Python

В этом уроке вы узнаете, из каких компонентов состоит бэкенд на Python — мы познакомимся с ключевыми терминами курса.

Веб-сервер

Большинство веб-приложений построено на клиент-серверной модели:

  • Клиент: Пользователь открывает браузер и отправляет запрос
  • Сервер: Запрос от браузера поступает на веб-сервер, который начинает обрабатывать его

Некоторые языки встраивают веб-сервер прямо в свое приложение, но большинство интерпретируемых языков использует специальную внешнюю программу.

Таких самостоятельных веб-серверов существует несколько, но наиболее популярен Nginx. Он обрабатывает входящие запросы, отдает статические файлы и распределяет запросы между веб-приложениями.

WSGI

Если бэкенд веб-приложения написан на Python, за веб-сервером обычно находится WSGI-сервер, который запускает WSGI-приложения. Рассмотрим подробнее, что это такое.

WSGI (Web Server Gateway Interface) — это такая абстракция, согласно которой происходит ответ на запросы. По сути это Python-функция, принимающая запрос и возвращающая ответ.

Самое простое WSGI-приложение выглядит примерно так:

# Код ниже может казаться непонятным, но это не так важно
# Главное — мы видим, что это всего лишь одна функция

def app(environ, start_response):
    data = b"Hello, World!\n"
    start_response("200 OK", [
        ("Content-Type", "text/plain"),
        ("Content-Length", str(len(data)))
    ])
    return iter([data])

Рассмотрим этот фрагмент кода подробнее:

  • Сначала все, что касается конкретного запроса, приходит в аргументе environ
  • Затем функция start_response устанавливает параметры ответа — здесь это размер ответа и тип содержимого
  • Далее функция просто возвращает итератор, построчно отдающий ответ

Самое простое рабочее веб-приложение можно получить довольно просто:

  • Берем популярный WSGI-сервер gunicorn
  • Сохраняем функцию в файл example.py
  • Вызываем команду gunicorn -w 4 example:app
  • Переходим по ссылке в выводе gunicorn и видим ответ сервера

Веб-фреймворк

Выше мы увидели довольно простое веб-приложение. Пусть оно и работает, но на любой запрос оно будет возвращать один и тот же текст. Что-то более сложное написать в таком стиле будет проблематично, пусть и выполнимо.

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

В эту структуру разработчику нужно только вписывать свои фрагменты кода, при этом сам скелет приложения уже готов к применению. Самые популярные веб-фреймворки для Python — это Django и Flask.

Веб-фреймворки берут на себя много разных задач:

  • Выполняют маршрутизацию
  • Упрощают работу с заголовками и данными запросов
  • Формируют ответы в разных форматах
  • Сохраняют истории запросов в файлы для статистики и отладки

ORM и шаблонизатор

Что же еще находится в бэкенде, кроме обработки запросов? Чаще всего там есть ORM и шаблонизатор.

ORM (Object-Relational Mapping) — это средство работы с записями в базах данных, предоставляющие записи в виде понятных для языка программирования объектов.

Шаблонизатор — это средство, позволяющее писать HTML и CSS в отдельных файлах, а затем модифицировать их содержимое из кода так, чтобы верстка отображала нужные данные. Шаблонизатор дает возможность сверстать макет один раз, а потом программно получать из макета разные страницы.

Django и некоторые другие веб-фреймворки уже включают в себя ORM и шаблонизатор.


Дополнительные материалы

  1. Django
  2. Flask

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

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

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

Для полного доступа к курсу нужен базовый план

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

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

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

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

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

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

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 21 ноября

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

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

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»