0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этом уроке вы узнаете, из каких компонентов состоит бэкенд на Python - мы познакомимся с ключевыми терминами курса.</p>
1
<p>В этом уроке вы узнаете, из каких компонентов состоит бэкенд на Python - мы познакомимся с ключевыми терминами курса.</p>
2
<h2>Веб-сервер</h2>
2
<h2>Веб-сервер</h2>
3
<p>Большинство веб-приложений построено на клиент-серверной модели:</p>
3
<p>Большинство веб-приложений построено на клиент-серверной модели:</p>
4
<ul><li><strong>Клиент</strong>: Пользователь открывает браузер и отправляет запрос</li>
4
<ul><li><strong>Клиент</strong>: Пользователь открывает браузер и отправляет запрос</li>
5
<li><strong>Сервер</strong>: Запрос от браузера поступает на<strong>веб-сервер</strong>, который начинает обрабатывать его</li>
5
<li><strong>Сервер</strong>: Запрос от браузера поступает на<strong>веб-сервер</strong>, который начинает обрабатывать его</li>
6
</ul><p>Некоторые языки встраивают веб-сервер прямо в свое приложение, но большинство интерпретируемых языков использует специальную внешнюю программу.</p>
6
</ul><p>Некоторые языки встраивают веб-сервер прямо в свое приложение, но большинство интерпретируемых языков использует специальную внешнюю программу.</p>
7
<p>Таких самостоятельных веб-серверов существует несколько, но наиболее популярен<strong>Nginx</strong>. Он обрабатывает входящие запросы, отдает статические файлы и распределяет запросы между веб-приложениями.</p>
7
<p>Таких самостоятельных веб-серверов существует несколько, но наиболее популярен<strong>Nginx</strong>. Он обрабатывает входящие запросы, отдает статические файлы и распределяет запросы между веб-приложениями.</p>
8
<h2>WSGI</h2>
8
<h2>WSGI</h2>
9
<p>Если бэкенд веб-приложения написан на Python, за веб-сервером обычно находится<strong>WSGI-сервер</strong>, который запускает<strong>WSGI-приложения</strong>. Рассмотрим подробнее, что это такое.</p>
9
<p>Если бэкенд веб-приложения написан на Python, за веб-сервером обычно находится<strong>WSGI-сервер</strong>, который запускает<strong>WSGI-приложения</strong>. Рассмотрим подробнее, что это такое.</p>
10
<p><strong>WSGI</strong>(Web Server Gateway Interface) - это такая абстракция, согласно которой происходит ответ на запросы. По сути это Python-функция, принимающая запрос и возвращающая ответ.</p>
10
<p><strong>WSGI</strong>(Web Server Gateway Interface) - это такая абстракция, согласно которой происходит ответ на запросы. По сути это Python-функция, принимающая запрос и возвращающая ответ.</p>
11
<p>Самое простое WSGI-приложение выглядит примерно так:</p>
11
<p>Самое простое WSGI-приложение выглядит примерно так:</p>
12
<p>Рассмотрим этот фрагмент кода подробнее:</p>
12
<p>Рассмотрим этот фрагмент кода подробнее:</p>
13
<ul><li>Сначала все, что касается конкретного запроса, приходит в аргументе environ</li>
13
<ul><li>Сначала все, что касается конкретного запроса, приходит в аргументе environ</li>
14
<li>Затем функция start_response устанавливает параметры ответа - здесь это размер ответа и тип содержимого</li>
14
<li>Затем функция start_response устанавливает параметры ответа - здесь это размер ответа и тип содержимого</li>
15
<li>Далее функция просто возвращает итератор, построчно отдающий ответ</li>
15
<li>Далее функция просто возвращает итератор, построчно отдающий ответ</li>
16
</ul><p>Самое простое рабочее веб-приложение можно получить довольно просто:</p>
16
</ul><p>Самое простое рабочее веб-приложение можно получить довольно просто:</p>
17
<ul><li>Берем популярный WSGI-сервер<a>gunicorn</a></li>
17
<ul><li>Берем популярный WSGI-сервер<a>gunicorn</a></li>
18
<li>Сохраняем функцию в файл example.py</li>
18
<li>Сохраняем функцию в файл example.py</li>
19
<li>Вызываем команду gunicorn -w 4 example:app</li>
19
<li>Вызываем команду gunicorn -w 4 example:app</li>
20
<li>Переходим по ссылке в выводе gunicorn и видим ответ сервера</li>
20
<li>Переходим по ссылке в выводе gunicorn и видим ответ сервера</li>
21
</ul><h2>Веб-фреймворк</h2>
21
</ul><h2>Веб-фреймворк</h2>
22
<p>Выше мы увидели довольно простое веб-приложение. Пусть оно и работает, но на любой запрос оно будет возвращать один и тот же текст. Что-то более сложное написать в таком стиле будет проблематично, пусть и выполнимо.</p>
22
<p>Выше мы увидели довольно простое веб-приложение. Пусть оно и работает, но на любой запрос оно будет возвращать один и тот же текст. Что-то более сложное написать в таком стиле будет проблематично, пусть и выполнимо.</p>
23
<p>Чтобы упростить жизнь бэкенд-разработчика и помочь ему реализовывать типичные приложения, используются<strong>фреймворки</strong>- библиотеки, задающие готовую структуру приложения.</p>
23
<p>Чтобы упростить жизнь бэкенд-разработчика и помочь ему реализовывать типичные приложения, используются<strong>фреймворки</strong>- библиотеки, задающие готовую структуру приложения.</p>
24
<p>В эту структуру разработчику нужно только вписывать свои фрагменты кода, при этом сам скелет приложения уже готов к применению. Самые популярные веб-фреймворки для Python - это<strong>Django</strong>и<strong>Flask</strong>.</p>
24
<p>В эту структуру разработчику нужно только вписывать свои фрагменты кода, при этом сам скелет приложения уже готов к применению. Самые популярные веб-фреймворки для Python - это<strong>Django</strong>и<strong>Flask</strong>.</p>
25
<p>Веб-фреймворки берут на себя много разных задач:</p>
25
<p>Веб-фреймворки берут на себя много разных задач:</p>
26
<ul><li>Выполняют маршрутизацию</li>
26
<ul><li>Выполняют маршрутизацию</li>
27
<li>Упрощают работу с заголовками и данными запросов</li>
27
<li>Упрощают работу с заголовками и данными запросов</li>
28
<li>Формируют ответы в разных форматах</li>
28
<li>Формируют ответы в разных форматах</li>
29
<li>Сохраняют истории запросов в файлы для статистики и отладки</li>
29
<li>Сохраняют истории запросов в файлы для статистики и отладки</li>
30
</ul><h2>ORM и шаблонизатор</h2>
30
</ul><h2>ORM и шаблонизатор</h2>
31
<p>Что же еще находится в бэкенде, кроме обработки запросов? Чаще всего там есть<strong>ORM</strong>и<strong>шаблонизатор</strong>.</p>
31
<p>Что же еще находится в бэкенде, кроме обработки запросов? Чаще всего там есть<strong>ORM</strong>и<strong>шаблонизатор</strong>.</p>
32
<p><strong>ORM</strong>(Object-Relational Mapping) - это средство работы с записями в базах данных, предоставляющие записи в виде понятных для языка программирования объектов.</p>
32
<p><strong>ORM</strong>(Object-Relational Mapping) - это средство работы с записями в базах данных, предоставляющие записи в виде понятных для языка программирования объектов.</p>
33
<p><strong>Шаблонизатор</strong>- это средство, позволяющее писать HTML и CSS в отдельных файлах, а затем модифицировать их содержимое из кода так, чтобы верстка отображала нужные данные. Шаблонизатор дает возможность сверстать макет один раз, а потом программно получать из макета разные страницы.</p>
33
<p><strong>Шаблонизатор</strong>- это средство, позволяющее писать HTML и CSS в отдельных файлах, а затем модифицировать их содержимое из кода так, чтобы верстка отображала нужные данные. Шаблонизатор дает возможность сверстать макет один раз, а потом программно получать из макета разные страницы.</p>
34
<p>Django и некоторые другие веб-фреймворки уже включают в себя ORM и шаблонизатор.</p>
34
<p>Django и некоторые другие веб-фреймворки уже включают в себя ORM и шаблонизатор.</p>