Передача параметров

peredacha parametrov Сценарии на стороне сервера

в жестко определенных адресах URL

Ранее мы передавали параметры CGI-сценариям, указывая их в конце адреса URL, вводимого в адресную строку броузера — в строке с параметрами запроса, следующей после символа ?. Но адресная строка броузера не накладывает каких-то особенных ограничений. В частности, тот же синтаксис URL можно использовать в гиперссылках, внутри вебстраниц.


Например, веб-страница, представленная в примере 15.14, определяет три гиперссылки (текст между тегами <A> и </A>), каждая из которых снова запускает наш первоначальный сценарий tutor5.py, но с тремя предопределенными наборами параметров.

Пример 15.14. PP4E\Internet\Web\tutor5c.html

<HTML><TITLE>CGI 101</TITLE>

<BODY>

<Н1>Стандартные инструменты ввода: параметры в строке URL</H1>

<Р>Эта страница вызывает серверный сценарий tutor5.py, подставляя предопределенные данные в конец адреса URL сценария внутри простой гиперссылки (вместо использования формы ввода). Выберите в своем броузере пункт меню View Source (Исходный код страницы или Просмотр HTML-кода), чтобы увидеть определение гиперссылок для каждого из элементов списка ниже.

<Р>Этот пример в большей степени иллюстрирует особенности CGI, чем языка Python. Обратите внимание, что модуль cgi из стандартной библиотеки Python обрабатывает и этот способ ввода (который можно сымитировать, определив метод GET в атрибуте action формы), и ввод методом POST форм; для CGI-сценария на языке Python они выглядят одинаково. Иными словами, пользователи модуля cgi не зависят от метода отправки данных.

^Следует также отметить, что адреса URL с добавленными в конец входными значениями, как в данном примере, можно сгенерировать в процессе вывода страницы другим CGI-сценарием, чтобы направить следующий щелчок пользователя в нужное место; вместе со скрытыми полями ввода типа hiddenони предоставляют один из способов сохранения состояния между щелчками.

</P><HR>

<UL>

<LI><A href="cgi-bin/tutor5.py?name=Bob&shoesize=small">Send Bob, small</A>

<LI><A href="cgi-bin/tutor5.py?name=Tom&language=Python">Send Tom, Python</A>

<LI><A href="http://localhost/cgi-bin/tutor5.py?job=Evangelist&comment=spam"> Send Evangelist, spam</A>

</UL>

<HR></BODY></HTML>

Этот статический файл HTML определяет три гиперссылки — первые две укороченные, а третья определена полностью, но все они действуют аналогичным образом (опять-таки, целевому сценарию это безразлично). При переходе по адресу URL этого файла отображается страница, представленная на рис. 15.17. В общем это просто страница для запуска готовых вызовов сценария CGI. (Я уменьшил размер шрифта в окне броузера, чтобы снимок экрана уместился на странице книги: выполните этот пример у себя, если не сможете разобрать детали на рисунке.)

При щелчке на второй ссылке в этой странице будет создана страница ответа, изображенная на рис. 15.18. Эта ссылка вызывает сценарий CGI с параметром name, равным «Tom», и параметром language, равным «Python», поскольку эти параметры и их значения жестко определены в адресе URL, указанном в разметке HTML для второй гиперссылки. Гиперссылки с параметрами, подобные этим, иногда называют ссыл ка ми, хранящими информацию о состоянии, — они автоматически задают следующую операцию, которая будет выполнена сценарием. Эффект нажатия этой ссылки в точности такой, как если бы мы вручную ввели адрес URL в адресную строку броузера, как показано на рис. 15.18.

Рис. 15.17. Страница с гиперссылками, созданная файлом tutor5c.html

 

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

Параметры запроса в адресах URL, встроенных в пример 15.14, были жестко определены в разметке HTML страницы. Но подобные адреса URL могут также генерироваться CGI-сценарием автоматически, как часть страницы ответа, — для передачи сценарию вводимых данных, что является следующим уровнем во взаимодействии с пользователем. Для веб-приложений они являются простейшим способом «хранить» какие-то значения на протяжении сеанса. Тем же целям служат скрытые поля форм, которые рассматриваются далее.

Рис. 15.18. Страница ответа, созданная сценарием tutor5.py (3)

 

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

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

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