2010-04-21 4 views
2

Можно ли использовать Python в качестве CGI без использования модуля CGI и получить доступ ко всей информации обозревателя и обо всем?Использование Python в качестве скрипта CGI без модуля CGI?

Я пробовал:

#!/usr/bin/python 
import sys 
print "Content-type: text/html" 
print 
data = sys.stdin.readlines() 
print len(data) 

, но он всегда печатает 0.

ответ

3

Это действительно возможно, но много информации передается в качестве переменных окружения, а не на стандартный ввод. Фактически, единственное, что передается на стандартном вводе, является телом входящего запроса, который будет иметь только содержимое, если форма POSTED.

Для получения дополнительной информации о работе с CGI посетите веб-сайт, например http://www.w3.org/CGI/. (Это слишком много, чтобы объяснить весь стандарт в ответе здесь)

+0

К сожалению, hoohoo.ncsa, предыдущий стандартный дом спецификации CGI 1.1, связанный здесь, недавно спустился. Такая же информация в менее читаемом формате доступна в [RFC 3875] (http://www.ietf.org/rfc/rfc3875) – bobince

1

Несомненно. cgi - это полезный модуль без магических возможностей; он ничего не делает, что вы не можете сделать сами, читая и обрабатывая переменные среды (в частности, QUERY_STRING) и stdin, который вступает в игру для POST формы тела. (Но не забудьте прочитать переменную CONTENT_LENGTH среды и только для чтения, что количество байт, а не с помощью readlines(), иначе вы можете сделать свой скрипт повесить в ожидании дополнительного ввода, который никогда не придет.)

Действительно, есть полные альтернативы cgi для обработки подачи формы, либо как автономные модули, либо как часть структуры.

cgi модуль или нет, однако, сегодня я бы не стал писать CGI-based webapp. Намного лучше написать интерфейс WSGI и использовать wsgiref.handlers.CGIHandler для развертывания этого приложения WSGI через CGI. Затем вы можете легко перейти на более эффективный интерфейс веб-сервера по мере необходимости. Вы можете использовать модуль cgi внутри приложения WSGI, чтобы читать формы, если хотите, или, опять же, сделать свое дело.

Смежные вопросы