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")

<p>Модуль cgi</p>

В 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 = %(a)s + 1

%(b)s

%(mytext_html)s

Перейти на страницу:

Похожие книги