Подобным же образом, в духе предыдущего раздела, входные данные для сценария можно жестко определять в разметке HTML страницы в виде скрытых полей ввода. Такие поля ввода не отображаются на странице, но передаются серверу вместе с формой. Так, страница в примере 15.15 позволяет вводить значение поля job, но параметры name и language заполняются автоматически, за счет использования скрытых полей ввода.
Пример 15.15. PP4E\Internet\Web\tutor5d.html
<HTML><TITLE>CGI 101</TITLE>
<BODY>
<H1> Стандартные инструменты ввода: скрытые поля ввода</Н1>
<Р>Эта страница также вызывает серверный сценарий tutor5.py, но она определяет входные данные уже непосредственно в форме, в виде скрытых полей ввода, а не в виде параметров в конце адреса URL в гиперссылке.
Как и прежде, определение этой формы, включая определение скрытых полей, может быть сгенерировано при выводе страницы другим CGI-сценарием, чтобы обеспечить передачу данных следующему сценарию; скрытые поля ввода форм являются еще одним способом сохранения информации между вызовами страниц. </P><HR><p>
<form method=post action="cgi-bin/tutor5.py">
<input type=hidden name=name value=Sue>
<input type=hidden name=language value=Python>
<input type=text name=job value="Enter job">
<input type=submit value="Submit Sue">
</form>
</p><HR></BODY></HTML>
Если страницу, представленную в примере 15.15, открыть в броузере, мы получим страницу ввода, изображенную на рис. 15.19.
Отправка этой формы инициирует вызов оригинального сценария tu- tor5.py, как и прежде (пример 15.12), но при этом некоторые входные данные передаются в скрытых полях ввода. Сценарий возвращает страницу ответа, изображенную на рис. 15.20.
Как и в случае передачи данных в виде параметров в строке запроса, показанном в предыдущем разделе, здесь входные данные также жестко определены и встроены непосредственно в разметку HTML формы ввода. В отличие от параметров в строке запроса, значения скрытых полей ввода не отображаются в адресе следующей страницы. Подобно параметрам запроса определения таких полей ввода также можно генерировать динамически, при выводе ответа CGI-сценарием. Когда скрытые поля ввода служат целям передачи входных данных и получения следующей страницы, они являются своего рода средством сохранения информации между вызовами сценариев. Чтобы понять, где и когда их следует использовать, нам необходимо коротко познакомиться с другими альтернативными способами сохранения информации.
Рис. 15.19. Страница с формой ввода tutor5d.html
Рис. 15.20. Страница ответа, созданная сценарием tutor5.py (4)
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011