是否可以在不使用CGI模块的情况下将Python用作CGI,并且仍然可以访问所有浏览器信息和所有内容?
我试过了:
#!/usr/bin/python
import sys
print "Content-type: text/html"
print
data = sys.stdin.readlines()
print len(data)
但它总是打印0。
答案 0 :(得分:3)
确实可以,但很多信息是作为环境变量传递的,而不是标准输入。实际上,传入标准输入的唯一内容是传入请求的主体,如果表单正在被POST,则只有内容。
有关如何使用CGI的更多信息,请查看http://www.w3.org/CGI/等网站。 (在这里的答案中解释整个标准太过分了)
答案 1 :(得分:1)
不确定。 cgi
是一个没有神奇力量的实用模块;它通过阅读和处理环境变量(特别是QUERY_STRING
)和stdin
来完成任何你无法做到的事情,这些变量对POST
表单体起作用。 (但是请记住阅读CONTENT_LENGTH
环境变量并且只读取那么多字节,而不是使用readlines()
,否则你可以让你的脚本等待更多永远不会来的输入。)
实际上,cgi
有完整的表单提交处理替代方案,可以作为独立模块,也可以作为框架的一部分。
cgi
模块或不,但是,我今天不会写一个纯粹的基于CGI的webapp。写入WSGI接口要好得多,并使用wsgiref.handlers.CGIHandler
通过CGI部署该WSGI应用程序。然后,您可以根据需要轻松迁移到更高效的Web服务器界面。您可以使用WSGI应用程序中的cgi
模块来阅读表单提交,如果您愿意,或者再次执行您自己的工作。