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