Краткое руководство. Создание первого веб-приложения Python с помощью Visual Studio
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
В рамках этого краткого (на 5–10 минут) знакомства с Visual Studio в качестве IDE для Python создается простое веб-приложение Python на платформе Flask. Вы создадите проект при помощи дискретных действий, которые помогут ознакомиться с базовыми функциями Visual Studio.
Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого. В установщике выберите рабочую нагрузку Разработка на Python.
Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого. В Visual Studio Installer выберите рабочую нагрузку Разработка на Python, а в сведениях об установке — Веб-поддержка в Python.

Создание проекта
Ниже приведены инструкции по созданию пустого проекта, который служит контейнером для приложения:
- Откройте Visual Studio 2019.
- На начальном экране выберите Создать новый проект.
- В диалоговом окне Создать новый проект введите «Python веб» в поле поиска вверху, выберите Веб-проект в среднем списке и нажмите Далее:
Если вы не видите шаблоны проектов Python, запустите установщик Visual Studio, выберите «Дополнительно>изменить«, выберите рабочую нагрузку разработки Python, а затем нажмите кнопку «Изменить«.
- В следующем диалоговом окне Настроить новый проект введите HelloPython в качестве имени проекта, укажите расположение и выберите Создать. (Имя решения автоматически устанавливается в соответствии с именем проекта.)

- Новый проект откроется в обозревателе решений в правой области. Проект пока пуст, так как он не содержит других файлов.

- Откройте Visual Studio 2022.
- На начальном экране выберите Создать новый проект.
- В диалоговом окне Создание проекта введите «Python web» в поле поиска вверху. Выберите Веб-проект из списка, а затем нажмите Далее:
Если вы не видите шаблоны веб-проекта Python, выберите пункт Средства>Get Tools and Features (Получить средства и компоненты), чтобы запустить Visual Studio Installer. В Installer выберите рабочую нагрузку Разработка на Python, а в разделе Сведения об установке щелкните Веб-поддержка в Python. Затем нажмите кнопку Изменить. - В диалоговом окне Настроить новый проект введите «HelloPython» в качестве имени проекта, укажите расположение, а затем выберите Создать. Поле Имя решения автоматически обновится в соответствии с именем проекта.

Новый проект откроется в обозревателе решений в правой области. Проект пока пуст, так как он не содержит других файлов.

Вопрос. В чем преимущество создания проекта в Visual Studio для приложений Python?
Ответ. Приложения Python обычно определяются только с помощью папок и файлов, однако такая простая структура может стать утомительной по мере увеличения размеров приложений. Приложения могут содержать автоматически созданные файлы, JavaScript для веб-приложений и другие компоненты. Проект Visual Studio помогает управлять этими сложными моментами.
Проект, PYPROJ-файл, определяет все исходные файлы и файлы содержимого, связанные с проектом. PYPROJ-файл содержит сведения о сборке для каждого файла, хранит информацию для интеграции с системами управления версиями и помогает упорядочить ваше приложение в виде логических компонентов.
Вопрос. Что представляет собой «решение», которое отображается в обозревателе решений?
Ответ. Решение Visual Studio — это контейнер, который помогает управлять одним или несколькими связанными проектами в виде группы. В решении хранятся параметры конфигурации, которые не относятся к конкретному проекту. Проекты в решении также могут ссылаться друг на друга. Например, при запуске проекта приложения Python может автоматически создаваться второй проект, например расширение C++, используемое приложением Python.
Установка библиотеки Flask
Веб-приложения на Python почти всегда используют одну из множества доступных библиотек Python для обработки низкоуровневых процессов, таких как маршрутизация веб-запросов и формирование ответов. Visual Studio предоставляет множество шаблонов для веб-приложений. Позже в этом кратком руководстве вы используете один из этих шаблонов.
А сейчас выполните следующие шаги, чтобы установить библиотеку Flask в глобальном окружении по умолчанию, которое Visual Studio использует для этого проекта.
- Разверните в проекте узел Окружения Python, чтобы увидеть среду по умолчанию для проекта.

- Щелкните правой кнопкой мыши среду и выберите пункт «Управление пакетами Python. «. Эта команда открывает окно «Среды Python» на вкладке «Пакеты» (PyPI).
- В поле поиска введите «flask». Если Flask отображается под полем поиска, этот шаг можно пропустить. В противном случае выберите Запустить команду: pip install flask. Подтвердите запросы на права администратора и наблюдайте за ходом выполнения в окне Вывод в Visual Studio. (Запрос на повышение прав выводится в том случае, если папка пакетов для глобальной среды находится в защищенной области, такой как C:\Program Files.)

- Разверните в проекте узел Окружения Python, чтобы увидеть среду по умолчанию для проекта.

- Щелкните окружение правой кнопкой мыши и выберите Открыть пакеты Python. Эта команда открывает вкладку Пакеты (PyPI) в окне Окружения Python.
- В поле поиска введите «flask». Если Flask отображается под полем поиска, этот шаг можно пропустить. В противном случае выберите Выполнить команду: pip install flask.
Запрос на повышение прав отображается, если папка пакетов глобального окружения находится в защищенной области, например в папке C:\Program Files. Подтвердите запросы на права администратора. Следите за ходом выполнения в окне Вывод в Visual Studio.
После установки библиотека появится в среде в Обозревателе решений. Это означает, что ее можно использовать в коде Python.


Вместо установки библиотек в глобальном окружении разработчики обычно создают «виртуальное окружение», в котором устанавливаются библиотеки для определенного проекта. Шаблоны Visual Studio обычно обеспечивают такую возможность, как описано в кратком руководстве по созданию проекта Python с помощью шаблона.
Вопрос. Где можно подробнее узнать о других доступных пакетах Python?
Ответ. Перейдите к странице индекса пакетов Python.
Добавление файла кода
Теперь можно добавить немного кода на Python, чтобы реализовать простейшее веб-приложение.
- Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите «Добавить>новый элемент«.
- В открывшемся диалоговом окне выберите элемент Пустой файл Python, присвойте файлу имя app.py и нажмите кнопку Добавить. Файл автоматически откроется в редакторе кода Visual Studio.
- Скопируйте следующий код и вставьте его в app.py:
from flask import Flask # Create an instance of the Flask class that is the WSGI application. # The first argument is the name of the application module or package, # typically __name__ when using a single module. app = Flask(__name__) # Flask route decorators map / and /hello to the hello function. # To add other resources, create functions that generate the page contents # and add decorators to define the appropriate resource locators for them. @app.route('/') @app.route('/hello') def hello(): # Render the page return "Hello Python!" if __name__ == '__main__': # Run the app server on localhost:4449 app.run('localhost', 4449)
- Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите «Добавить>новый элемент«.
- В появившемся диалоговом окне выберите Пустой. В качестве имени введите app.py, а затем нажмите кнопку Добавить. Файл автоматически откроется в редакторе кода Visual Studio.
- Скопируйте следующий код и вставьте его в app.py:
from flask import Flask # Create an instance of the Flask class that is the WSGI application. # The first argument is the name of the application module or package, # typically __name__ when using a single module. app = Flask(__name__) # Flask route decorators map / and /hello to the hello function. # To add other resources, create functions that generate the page contents # and add decorators to define the appropriate resource locators for them. @app.route('/') @app.route('/hello') def hello(): # Render the page return "Hello Python!" if __name__ == '__main__': # Run the app server on localhost:4449 app.run('localhost', 4449)
Как вы могли заметить, в диалоговом окне Добавить>Создать элемент отображается много других типов файлов, которые можно добавить в проект Python, в том числе класс Python, пакет Python, модульный тест Python, файлы web.config и многое другое. Как правило, эти шаблоны элементов прекрасно подходят для быстрого создания файлов при помощи полезного стандартного кода.
Вопрос. Где можно подробнее узнать о Flask?
Ответ. Ознакомьтесь с документацией по Flask. Начать можно с краткого руководства по Flask.
Выполнение приложения
- В Обозревателе решений щелкните правой кнопкой мыши файл app.py, а затем в раскрывающемся меню выберите Задать как файл запуска. С помощью этой команды файл кода задается как запускаемый в Python при запуске приложения.


Вопрос. В чем разница между командами «Запустить без отладки» и «Начать отладку»?
Ответ. Команда Начать отладку используется, чтобы запустить приложение в контексте отладчика Visual Studio. С помощью отладчика можно устанавливать точки останова, проверять переменные и поэтапно выполнять код строка за строкой. С отладчиком приложения могут работать медленнее, так как для отладки используются различные обработчики.
Команда Запустить без отладки запускает приложение напрямую, как если бы оно запускалось из командной строки без контекста отладки. Команда Запустить без отладки также автоматически запускает браузер и переходит по URL-адресу, указанному на вкладке Отладка свойств проекта.
Следующие шаги
Поздравляем с запуском вашего первого приложения Python из Visual Studio. Вы немного узнали об использовании Visual Studio в качестве интегрированной среды разработки Python!
Так как приведенные в этом руководстве инструкции довольно общие, вы, вероятно, догадались, что их можно и нужно автоматизировать. Такая автоматизация выполняется при помощи шаблонов проектов Visual Studio. Изучите краткое руководство Создание проекта Python с использованием шаблона, чтобы узнать, как создать веб-приложение, похожее на описанные в этой статье, но с меньшим количеством шагов.
Чтобы перейти к более полному учебнику по работе с Python в Visual Studio, в том числе к использованию интерактивного окна, отладки, визуализации данных и работы с Git, см. раздел Учебник. Начало работы с Python в Visual Studio.
Более подробно ознакомиться с возможностями Visual Studio можно по приведенным ниже ссылкам.
- Сведения о шаблонах веб-приложений Python в Visual Studio.
- Сведения об отладке Python
- Общие сведения об интегрированной среде разработки Visual Studio.
Хотите минималистичный браузер? Python — это решение
Что такое веб-браузер? Ну, просто приложение, которое позволяет нам просматривать содержимое сайтов или страниц, доступных в Интернете, верно?
В последнее время с развитием программирования или интерпретируемых языков (HTML5, CSS3, JQuery и другие) , функции и возможности этих типов приложений были расширены до такой степени, что они могут стать Настольные среды.
Я уверен, когда мы говорим о веб-браузер минимализм, небольшое потребление ресурсов, простой интерфейс и т. д. Приложения этого типа у нас есть в GNU / Linux на выбор, из консольных браузеров, например Links2, где вы можете видеть содержимое сайта только через текст, даже в более продвинутых браузерах, таких как Midori, где мы можем наслаждаться изображениями и другими элементами, составляющими веб-сайт, и все это, используя несколько ресурсов.
Но, к счастью, между ранее упомянутыми приложениями есть золотая середина. Другими словами, браузеры, которые позволяют вам наслаждаться графическими элементами, текстом и мультимедиа, и при этом не потреблять так много ресурсов. Все это благодаря Python, Gtk и Webkit.
Здесь у нас есть первый пример, нам просто нужно сохранить этот код с именем browser.py и запустите его в консоли:

В этом случае мы можем использовать некоторые основные параметры, такие как Обновите страницу, Вперед или назад и увидите полосу загрузки. Но если мы хотим чего-то еще проще, у нас есть другой пример, написанный Даниэль Фуэнтес B, код которого можно скачать отсюда.

Что вы думаете? Для тех из вас, кто хочет обойтись без надстроек и мгновенно запустить браузер
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Из Linux » приложений » Хотите минималистичный браузер? Python — это решение
11 комментариев, оставьте свой
Знакомство с веб-технологиями

Кратко: когда вы вбиваете адрес сервера в ваш браузер, браузер соединяется с этим сервером и отправляет ему запрос по протоколы HTTP (https://ru.wikipedia.org/wiki/HTTP). Это текстовый прикладной протокол поверх TCP/IP. В ответ, сервер присылает вашему браузеру HTML код страницы.
HTML — это язык разметки, который используется для оформления страниц в интернете. Например, он позволяет выделять в тексте заголовки, делать шрифт жирным или курсивным, вставлять абзацы и таблицы и многое другое. Идея HTML в помещение текста внутрь тэгов, которые определяют, каким будет этот текст.
- http://htmlbook.ru/samhtml/vvedenie-v-html
- https://www.w3schools.com/html/default.asp
- https://htmlacademy.ru/
Если HTML код на сервере лежит в виде файла, то такая страница называется статической, а если она генерируется кодом на python или PHP (или любом другом) прямо во время запроса — такая страница называется динамической.
Помимо HTML, на странице могут быть CSS стили и скрипты на JavaScript. CSS стили задают дизайн страницы (например, цвета и отступы), а JS позволяет сделать страницы интерактивными (всплывающие окна, вкладки, фоновое обновление страниц и тд.)
Некоторые определения
Веб-сервер
- устройство vs. программа
- задача — получать запросы от других компьютеров или программ (клиентов, clients) и отправлять запрошенные данные
- основная функция — размещение сайтов (website hosting)
Термины
- Запрос (request) — сообщение от агента, желающего получить или разместить информацию
- Ответ (response) — ответное сообщение сервера с кодом состояния и информацией (HTML, изображения, загружаемые файлы и т. п.)
- Протокол (protocol) — набор правил, по которым составляются запросы и ответы
- Сессия (session) — установка соединения между агентом и сервером и последующая серия запросов и ответов
- Гипертекст — множество текстов, организованных в виде графа при помощи гиперссылок
- Протокол HTTP (HyperText Transfer Protocol) — протокол для передачи гипертекстовых данных (обычно в виде HTML)
- URL (Uniform Resource Locator), веб-адрес ресурса — строка, представляющая собой уникальное имя, по которому можно найти в сети этот ресурс
Адресация
- IP-адрес — (пока что) набор из 4 байт, присваиваемый каждому подключённому к сети устройству
- Некоторые IP-адреса уникальны, некоторые — нет (внутренние адреса в локальных сетях)
- Практически любой ресурс (например, сайт) можно получить по его IP-адресу (например, через браузер)
- Существуют зарезервированные адреса и диапазоны адресов, например, 127.0.0.1 — адрес данного устройства
- Каждый запрос обращается не просто к какому-то IP-адресу, а к некоторому порту на этом адресе
- Веб-сервер имеет 65 535 портов, пронумерованных начиная с 1
- Веб-сервер может прослушивать некоторые порты (listen to ports) и по-разному обрабатывать сообщения, поступившие на разные порты
- Если порт не прослушивается, сообщения на этот порт останутся без ответа
URL
http://www.example.com:1234/directory1/file1.html
протокол://доменное имя или IP-адрес:порт/адрес файла на сервере
- Порт указывать не обязательно: используются стандартные порты (HTTP — 80, FTP — 20 и т. п.)
- DNS (Domain Name Servers) — специальные сервера в сети, на которых хранятся таблицы соответствия между доменными именами и IP-адресами их серверов
HTML и скрипты
- страницы, содержимое (HTML-код) которых не изменяется, называются статическими (static)
- страницы, содержимое которых может быть разным в зависимости от введённых пользователем данных, времени, IP-адреса и т. п., называются динамическими (dynamic)
- динамические страницы создаются с помощью скриптов на стороне сервера (server side scripts), написанных, например, на PHP или Python
- скрипт порождает HTML и посылает его пользователю
- пользователь не видит кода скрипта, выполняющегося на сервере
- скрипт на стороне клиента (client side script) — вставка в HTML на каком-то языке программирования (например, JavaScript), позволяющая странице вести себя интерактивно
- код клиентских скриптов посылается клиенту сервером вместе с HTML и не выполняется на сервере
Питон и сайты
Написать сайт на питоне значит написать такую программу, которая может работать веб-сервером или использоваться веб-сервером для порождения HTML-кода веб-страниц. Для этого существует несколько модулей, например, Django и Flask
Веб-сервер на чистых сокетах
Для получения HTML кода страниц от сервера в интернете используется протокол HTTP. Это текстовый протокол, в котором после подключения к серверу клиент (браузер) должен отправить запрос с описанием того, что он хочет, а сервер в ответ посылает HTML код.
Давайте попробуем сделать совсем простой веб-сервер, используя только стандартные сокеты.
import socket host = '' port = 80 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((host, port)) sock.listen(1) while True: conn, caddr = sock.accept() print ("Connection from: ", caddr) req = conn.recv(1024).decode('utf-8') print (req) conn.sendall("""HTTP/1.0 200 OK Content-Type: text/html Success Boo! """.encode('utf-8')) conn.close()
Попробуйте запустить его и в вашем любимой браузере перейти по адресу http://127.0.0.1 . Если все работает правильно вы увидите HTML страницу со словом Boo! .
Код выше печатает в консоли код запроса, который пришел от клиента:
GET / HTTP/1.1 Host: 127.0.0.1:80 Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Как видите, это текстовое сообщения, в котором в первой строке указано, что посылается HTTP запрос GET / HTTP/1.1 , а далее указываются некоторые его параметры.
В ответе мы посылаем клиенту строки HTTP/1.0 200 OK и Content-Type: text/html , в которых указано, что страница найдена и ответ — это HTML код, а дальше (спустя одну пустую строку) отдаем ответ в виде HTML кода.
Flask — небольшой фреймворк для разработки веб-сервисов
Несмотря на то, что веб-сервер на питоне можно сделать простыми сокетами, обычно так не делают: приходится каждый раз самостоятельно описывать тонкости работы с протоколом, вместо того, чтобы просто писать на какой запрос как нужно овтетить.
Чтобы упростить эту задачу, программисты часто используются фрейворки — это библиотеки, которые упрощают разработку кода и задают некоторый удобный шаблон, как должна выглядеть программа. Например, для разработки веб-сервисов на питоне удобно использовать Flask — http://flask.pocoo.org/docs/0.12/quickstart/#.
pip install flask
Например, код сервера, который мы писали выше на сокетах, на Flask будет выглядеть так:
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Boo!' app.run(debug=True, port=8080)
Чтобы увидеть результат, нужно в браузере зайти на адрес http://127.0.0.1:8080 .
PS: Я выбрал порт 8080, тк для выбора порта 80 программу нужно запускать от имени администратора ( sudo python3 my_server.py ).
Подобно коду телеграм ботов, код на flask состоит из функций, каждая из которых отвечает на конкретный запрос пользователя. В декораторе @app.route(‘/’) указывается путь к странице, которую запросил пользователь, а вернуть функция должна html код, который нужно отправить пользователю.
Напримен, если помимо главной страницы ( http://127.0.0.1:8080/ ) нам понадобися страница http://127.0.0.1:8080/about , код будет выглядеть следующим образом:
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Boo!' @app.route('/about') def about(): return """ Это страница о сервисе! """ app.run(debug=True, port=8080)
PS1: В режиме отладки ( debug=True ) переапускать программу после каждого изменения не трбуется.
PS2: Выше использован многострочный текст, в питоне для его обозначения вместо одинарных используются тройные кавычки.
Синтаксис HTML
Для описания внешнего вида страницы ипользуются HTML теги. Почти всегда теги идут в паре — открывающий и закрывающий (такая пара называется HTML элемент). Если открывающий тег
, то закрывающий будет
. Элементы можно вкладывать друг в друга или располагать рядом. В этом случае внешний элемент называется родителем (parent), а вложенный ребенком (child).
Важно: Теги закрываются по принципу стека: последний открылся — первый закрылся. Таким образом либо элемент находится полностью внутри второго элемента, либо они не пересекаются.
В любом HTML документе должны присутствовать теги , и .
Рассмотрим приведенный выше пример HTML файла:
- является главным тегом, внутри него находятся абсолютно все элементы на странице
- внутри располагается вспомогательная информация для браузера (например, заголовок страницы)
- внутри располагаются все блоки, которые будут видны на странице (например, текст)
Чтобы создать свою страницу сохраните файл с расширением .html и откройте его в браузере. Для этого нажмите на файл правой кнопкой мыши и выберите Открыть с помощью.
Теги HTML можно писать в любом регистре. Здесь и далее будет использоваться строчный вариант.
Для улучшения читаемости принято добавлять дополнительный отступ вложенным элементам.
Основные теги
Рассмотрим основные теги, с помощью которых совсем скоро вы сможете написать свой первый сайт.
Текст, заголовки, ссылки
До сих пор главным способом представления информации в интернете является текст, поэтому рассмотрим теги для создания заголовков, абзацев, ссылок и их позиционирования.
| Тег | Описание |
|---|---|
| Абзац (от слова paragraph) | |
| Текст жирно выделенный (от слова bold) | |
| Зачеркнутый текст (от слова strikethrough) | |
| Текст выделенный курсивом (от слова italic) | |
| Заголовок (существуют 6 типов заголовков: самый большой, самый маленький) | |
| Перевод строки (не требует закрывающего тега) | |
| Горизонтальная черта (не требует закрывающего тега) | |
| Ссылка, ведущая по адресу, указанному в кавычках |
Как говорилось ранее, теги можно вкладывать друг в друга, тем самым комбинируя эффекты, например, сделать абзац с жирной курсивной ссылкой.
Атрибуты
Некоторые элементы обладают атрибутами — специальными свойствами, указываемыми в открывающем теге.
Атрибуты перечисляются через пробел, а их значения (в двойных кавычках) присваиваются через знак равно.
Картинки
Как бы не был хорошо написан текст, без картинок обойтись трудно. Для вставки изображений используется тег (сокращение от image). Закрывающий тег не требуется. Основными атрибутами для картинки являются:
- src задает путь к картинке (сокращение от source)
- width задает ширину в пикселях (или процентах, если приписать знак процента)
- height задает высоту аналогично ширине
- alt задает текст, отображаемый на месте картинки в случае невозможности загрузить картинку

Списки
-
(сокращение от ordered list) и неупорядоченный список
(сокращение от unordered list). Каждый пункт списка помещается в тег
(сокращение от list item).
- Пункт под номером 1
- Пункт под номером 2
- Пункт под номером 3
- Пункт под номером 4
- Просто пункт
- Просто пункт
- Просто пункт
- Просто пункт
Как и другие элементы, списки можно вкладывать друг в друга, тем самым создавая подпункты пункта.
Таблицы
Столбец 1 Столбец 2 Столбец 3 1-1 1-2 1-3 2-1 2-2 2-3 3-1 3-2 3-3
В этом примере атрибут border задает толщину границы между ячейками (по-умолчанию ее нет), а атрибут cellspacing задает расстояние между ячейками (значение 0 заставялет слипнуться границы ячеек, тем самым избавиться от двойных границ).
Столбец 1 Столбец 2 Столбец 3 1-1 1-2 1-3 && 2-3 2-1 && 2-2 3-1 && 3-2 && 3-3
Тег
Внутри тега head помещают некоторые технические теги. Например, теги с информацией о языке странице, ее кодировке, теги, в которых мы загружаем стили.
На данный момент нам интересны только два тега.
Title задает заголовок страницы, отображаемый в названии вкладки- сообщает браузеру, что HTML файл имеет кодировку utf-8 . Таким образом сохранив файл в такой же кодировке (современные редакторы используют ее по умолчанию) удастся избежать «крокозябр».
Статические файлы и Flask
Если вам нужно разместить на вашем сайте обычный файл, например, картинку, то вам нужно содать папку static в папке с вашим проекто и разместить его там.
Например, если мы положим картинку image.jpg в папку static рядом с my-server.py , то вставить ее можно так:

Бэкенд на 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
Веб-фреймворк
Выше мы увидели довольно простое веб-приложение. Пусть оно и работает, но на любой запрос оно будет возвращать один и тот же текст. Что-то более сложное написать в таком стиле будет проблематично, пусть и выполнимо.
Чтобы упростить жизнь бэкенд-разработчика и помочь ему реализовывать типичные приложения, используются фреймворки — библиотеки, задающие готовую структуру приложения.
В эту структуру разработчику нужно только вписывать свои фрагменты кода, при этом сам скелет приложения уже готов к применению. Самые популярные веб-фреймворки для Python — это Django и Flask.
Веб-фреймворки берут на себя много разных задач:
- Выполняют маршрутизацию
- Упрощают работу с заголовками и данными запросов
- Формируют ответы в разных форматах
- Сохраняют истории запросов в файлы для статистики и отладки
ORM и шаблонизатор
Что же еще находится в бэкенде, кроме обработки запросов? Чаще всего там есть ORM и шаблонизатор.
ORM (Object-Relational Mapping) — это средство работы с записями в базах данных, представляющие записи в виде понятных для языка программирования объектов.
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях: