2010-04-21 126 views
2

是否有可能在不使用CGI模塊的情況下將Python用作CGI,仍然可以訪問所有瀏覽器信息和所有內容?使用Python作爲沒有CGI模塊的CGI腳本?

我想:

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

,但它始終打印0.1

回答

3

這的確是可能的,但有很多的信息傳遞中的環境變量,而不是標準輸入。實際上,標準輸入中唯一傳入的是傳入請求的主體,如果表單正在被POST,則該請求僅包含內容。

有關如何使用CGI的更多信息,請檢查網站,如http://www.w3.org/CGI/。 (在這裏解釋整個標準太複雜了)

+0

不幸的是,hoohoo.ncsa,CGI 1.1規範的以前的標準版本,最近關閉了。 [RFC 3875](http://www.ietf.org/rfc/rfc3875)提供了可讀性較差的相同信息, – bobince 2010-04-21 06:30:47

1

當然。 cgi是一個沒有魔力的實用程序模塊;它通過閱讀和處理環境變量(特別是QUERY_STRING)和stdin來完成自己無法做到的任何事情,這些變量進入POST表單實體。 (但請務必閱讀CONTENT_LENGTH環境變量和只讀很多字節,而不是使用readlines(),否則你可以使你的腳本掛等待更多的輸入,將永遠不會到來。)

事實上,有以cgi完全替代品用於表單提交處理,既可以作爲獨立模塊,也可以作爲框架的一部分。

cgi模塊或否,但是,我今天不寫一個純粹的基於CGI的web應用程序。更好地寫入WSGI接口,並使用wsgiref.handlers.CGIHandler通過CGI部署該WSGI應用程序。然後,您可以根據需要輕鬆遷移到更高效的Web服務器界面。您可以使用WSGI應用程序中的cgi模塊閱讀表單提交,如果您喜歡,或者再次做自己的事情。