xmlns:dc=«http://http://purl.org/dc/elements/1.1/" xmlns:rdfs=«http://www.w3.org/2000/01/rdf–schema#" xmlns:foaf=«http://xmlns.com/foaf/0.1/" xmlns:rdf=«http://www.w3.org/1999/02/22–rdf–syntax–ns#" > %s»"" % os.environ С помощью него можно увидеть установленные Web–сервером переменные окружения. Выдаваемый CGI–сценарием web–серверу файл содержит заголовочную часть, в которой указаны поля с мета–информацией (тип содержимого, время последнего обновления документа, кодировка и т.п.). Основные переменные окружения, достаточные для создания сценариев: Листинг QUERY_STRING Строка запроса. Листинг REMOTE_ADDR IP–адрес клиента. Листинг REMOTE_USER Имя клиента (если он был идентифицирован). Листинг SCRIPT_NAME Имя сценария. Листинг SCRIPT_FILENAME Имя файла со сценарием. Листинг SERVER_NAME Имя сервера. Листинг HTTP_USER_AGENT Название броузера клиента. Листинг REQUEST_URI Строка запроса (URI). Листинг HTTP_USER_AGENT Имя сервера. Листинг HTTP_ACCEPT_LANGUAGE Желательный язык документа. Вот что может содержать словарь os.environ в CGI–сценарии: Листинг { 'DOCUMENT_ROOT': '/var/www/html', 'SERVER_ADDR': '127.0.0.1', 'SERVER_PORT': '80', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT_LANGUAGE': 'en–us, en;q=0.50', 'REMOTE_ADDR': '127.0.0.1', 'SERVER_NAME': 'rnd.onego.ru', 'HTTP_CONNECTION': 'close', 'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; U; Linux i586; en–US; rv:1.0.1) Gecko/20021003', 'HTTP_ACCEPT_CHARSET': 'ISO–8859–1, utf–8;q=0.66, *;q=0.66', 'HTTP_ACCEPT': 'text/xml,application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8,video/x–mng,image/png,image/jpeg, image/gif;q=0.2,text/css,*/*;q=0.1', 'REQUEST_URI': '/cgi–bin/test.py?a=1', 'PATH': '/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin', 'QUERY_STRING': 'a=1&b=2', 'SCRIPT_FILENAME': '/var/www/cgi–bin/test.py', 'HTTP_KEEP_ALIVE': '300', 'HTTP_HOST': 'localhost', 'REQUEST_METHOD': 'GET', 'SERVER_SIGNATURE': 'Apache/1.3.23 Server at rnd.onego.ru Port 80', 'SCRIPT_NAME': '/cgi–bin/test.py', 'SERVER_ADMIN': 'root@localhost', 'SERVER_SOFTWARE': 'Apache/1.3.23 (Unix) (Red–Hat/Linux) mod_python/2.7.8 Python/1.5.2 PHP/4.1.2', 'SERVER_PROTOCOL': 'HTTP/1.0', 'REMOTE_PORT': '39251' } Следующий CGI–сценарий выдает черный квадрат (в нем используется модуль Image для обработки изображений): Листинг #!/usr/bin/python import sys print ""«Content–Type: image/jpeg """ import Image i = Image.new(«RGB», (10,10)) i.im.draw_rectangle((0,0,10,10), 1) i.save(sys.stdout, «jpeg») Модуль cgi В Python имеется поддержка CGI в виде модуля cgi. Следующий пример показывает некоторые из его возможностей: Листинг #!/usr/bin/python # -*- coding: cp1251 -*-import cgi, os # анализ запроса f = cgi.FieldStorage if f.has_key(«a»): a = f[«a»].value else: a = «0» # обработка запроса b = str(int(a)+1) mytext = open(os.environ[«SCRIPT_FILENAME»]).read mytext_html = cgi.escape(mytext) # формирование ответа print ""«Content–Type: text/html
%(b)s
%(mytext_html)s