Создание CGI-сценариев на языке Python

Хотя все описанное выше может показаться сложным, не волнуйтесь — большую часть трудностей берут на себя Python и HTTP-сервер, выполняющий сценарии. Сценарии CGI пишутся как вполне автономные программы в предположении, что задачи начального запуска уже решены.

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

Как отмечалось выше, в контексте сценариев CGI стандартные потоки ввода-вывода, stdin и stdout, автоматически подключаются к сокетам, соединенным с броузером. Кроме того, HTTP-сервер передает часть информации от броузера CGI-сценарию в виде переменных окружения и, возможно, в виде аргументов командной строки. Для программистов CGI это означает:

     Вход ные дан ные, передаваемые броузером серверу, становятся потоком байтов в стандартном потоке ввода stdin, а также попадают в переменные окружения.

     Вы ход ные дан ные посылаются сервером клиенту просто в результате вывода корректно сформированной разметки HTML в стандартный поток вывода stdout.

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

С помощью модуля Python cgi входные данные, введенные в форму в окне веб-броузера или прикрепленные к строке URL, становятся для CGI-сценариев на языке Python значениями в объекте типа словаря. Python сам анализирует данные и совершенно независимо от стиля передачи (форма или URL) возвращает объект, в котором каждому значению, посланному броузером, соответствует пара key:value.

Вывод

В модуле cgi имеются также средства автоматического преобразования строк к виду, допустимому для использования в разметке HTML (например, замещающие встроенные символы <, > и & соответствующими экранированными последовательностями HTML). Модуль url- lib.parse предоставляет дополнительные средства форматирования текста, вставляемого в строки URL (например, добавляющие экранирующие последовательности %XX и +).

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

Пожалуй, картину несколько портит то, что сценарии CGI тесно связаны с синтаксисом языка разметки HTML, поскольку он должен генерироваться для создания страницы ответа. То есть можно сказать, что в CGI-сценарии на языке Python приходится встраивать разметку на языке HTML, который является совершенно отдельным самостоятельным языком. Как будет показано, то обстоятельство, что сценарии CGI создают интерфейс пользователя путем вывода разметки HTML, означает необходимость особенно тщательно следить за тем, какой текст будет помещен в код веб-страницы (например, придется экранировать операторы HTML). Еще хуже то, что для создания сценариев CGI требуется хотя бы беглое знание форм HTML, поскольку в них обычно и задаются входные данные и адрес целевого сценария.

Эта книга не ставит перед собой задачу обучения языку HTML — если вас озадачит таинственный синтаксис HTML, генерируемый приводимыми здесь сценариями, загляните в какое-нибудь введение в HTML, например, в книгу «HTML и XHTML. Подробное руководство». Имейте также в виду, что высокоуровневые инструменты и фреймворки могут иногда скрывать детали конструирования форм от программистов на языке Python, хотя и ценой новых усложнений, обычно свойственных фреймворкам. Например, с помощью HTMLgen и других подобных пакетов можно вообще не иметь дело с разметкой HTML и оперировать привычными объектами Python, однако для этого вам придется изучить прикладной интерфейс этой системы.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий