Глава 22 · Веб-разработка с Python

Основы веб-разработки: клиент, сервер и Python

Веб-приложение — это диалог между клиентом и сервером. Разберёмся, кто в нём кто.

Веб-приложение обычно состоит из двух взаимодействующих сторон: клиента и сервера. Клиентом чаще всего является браузер. Он отправляет HTTP-запросы и отображает полученные ответы. Серверная часть принимает запросы, выполняет логику приложения, при необходимости обращается к базе данных и формирует ответ.

Python часто используется для программирования серверной части веб-приложения. В этой главе серверное приложение написано на Python с использованием Flask.

А как же Python в браузере?
Это не означает, что Python принципиально не может выполняться в браузере. Существуют среды на основе WebAssembly, например Pyodide — на нём построена интерактивная практика этой книги, — которые позволяют выполнять Python на стороне клиента. Однако это другая модель выполнения; здесь изучается классическая серверная веб-разработка.

Клиент и сервер

Клиент — программа, которая отправляет запрос и получает на него ответ. Сервер — программа, которая принимает запросы и отвечает на них. Слово «сервер» обозначает именно серверную программу (процесс); в разговорной речи им иногда называют и компьютер, на котором эта программа запущена, — из контекста обычно понятно, что имеется в виду.

Браузер (клиент)отправляет запросИнтернетпередаёт данныеСерверготовит ответБраузер (клиент)показывает страницу
Один цикл: запрос уходит на сервер, ответ возвращается и отображается в браузере

Этот обмен запросами и ответами подчиняется общему правилу — протоколу HTTP (HyperText Transfer Protocol, протокол передачи гипертекста). Подробнее об этом — в разделах 22.7-22.10; здесь достаточно знать, что браузер и сервер обмениваются сообщениями по одним и тем же правилам, независимо от того, кто их написал.

Что делает браузер

Браузер — это клиентская программа, которая по адресу пользователя строит и отправляет HTTP-запрос, получает HTTP-ответ и отображает его: разбирает HTML, применяет CSS, выполняет JavaScript, показывает изображения и другие ресурсы страницы.

Что делает серверное приложение

Серверное приложение принимает запрос, определяет, что нужно сделать (открыть список задач, сохранить новую запись, вернуть данные в формате JSON), при необходимости обращается к базе данных и формирует ответ — чаще всего HTML-страницу или данные.

Где используется Python

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

Интернет и Всемирная паутина

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

Адрес сайта: домен и IP-адрес

Чтобы браузер знал, к какому серверу обращаться, у сайта есть домен — имя вида python.org, которое человеку легко запомнить. Но компьютеры в интернете находят друг друга по числовым адресам — IP-адресам. Специальная служба, DNS, превращает домен в IP-адрес перед отправкой запроса. Весь этот путь подробно рассматривается в разделе 22.7, а устройство самого адреса — в разделе 22.8.

Фронтенд и бэкенд

То, что видит и с чем взаимодействует пользователь в браузере — HTML, CSS, JavaScript, — называют фронтендом (front — «перед»). Программу, которая работает на сервере и готовит ответы, называют бэкендом (back — «тыл»).

Статическая страница и динамическое приложение

Самый простой сайт — это просто файлы .html, лежащие на сервере: сервер отдаёт их без изменений, это статическая страница. Если же ответ каждый раз собирается заново — с учётом того, кто спросил, что хранится в базе данных, что человек только что отправил в форме, — такое приложение называют динамическим. Сайт, который вы соберёте в этой главе на Flask, — динамический: он строит HTML-страницу из данных прямо во время запроса.

В следующих трёх разделах — краткое знакомство с языками фронтенда: HTML (раздел 22.2), CSS (раздел 22.3) и JavaScript (раздел 22.4). Затем — первый бэкенд на Python с библиотекой Flask (раздел 22.5).