Python 为什么我会得到错误,KeyError:';wsgi.input';?
我正在使用WSGI并尝试访问get/post数据,使用以下代码:Python 为什么我会得到错误,KeyError:';wsgi.input';?,python,mod-wsgi,Python,Mod Wsgi,我正在使用WSGI并尝试访问get/post数据,使用以下代码: import os import cgi from traceback import format_exception from sys import exc_info def application(environ, start_response): try: f = cgi.FieldStorage(fp=os.environ['wsgi.input'], environ=os.environ)
import os
import cgi
from traceback import format_exception
from sys import exc_info
def application(environ, start_response):
try:
f = cgi.FieldStorage(fp=os.environ['wsgi.input'], environ=os.environ)
output = 'Test: %s' % f['test'].value
except:
output = ''.join(format_exception(*exc_info()))
status = '200 OK'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
但是,我得到以下错误:
Traceback (most recent call last):
File "/srv/www/vm/custom/gettest.wsgi", line 9, in application
f = cgi.FieldStorage(fp=os.environ['wsgi.input'], environ=os.environ)
File "/usr/lib64/python2.4/UserDict.py", line 17, in __getitem__
def __getitem__(self, key): return self.data[key]
KeyError: 'wsgi.input'
是因为我的版本中不存在wsgi.input吗?您误用了
请创建一个显示此错误的最小(“hello world”)函数,以便我们可以对您的代码进行注释。[不要发布您的整个应用程序,它可能太大、太笨拙,我们无法对此发表评论。]
os.environ
不是您应该使用的。WSGI用一个丰富的环境来代替它。WSGI应用程序有两个参数:一个是包含'WSGI.input'
的字典
在你的代码中
def application(environ, start_response):
try:
f = cgi.FieldStorage(fp=os.environ['wsgi.input'], environ=os.environ)
根据WSGIAPI规范(),不要使用os.environ
。使用应用程序的第一个位置参数environ
environ参数是一个字典
对象,包含CGI样式
环境变量。这个物体
必须是内置Python字典
(不是子类、UserDict或其他
字典仿真)和
允许应用程序修改
不管它想要什么样的词典。这个
词典还必须包括某些
WSGI所需变量(如中所述
后面的章节),也可能包括
特定于服务器的扩展变量,
按照约定命名的
下文将对其进行说明
你误用了这个词
请创建一个显示此错误的最小(“hello world”)函数,以便我们可以对您的代码进行注释。[不要发布您的整个应用程序,它可能太大、太笨拙,我们无法对此发表评论。]
os.environ
不是您应该使用的。WSGI用一个丰富的环境来代替它。WSGI应用程序有两个参数:一个是包含'WSGI.input'
的字典
在你的代码中
def application(environ, start_response):
try:
f = cgi.FieldStorage(fp=os.environ['wsgi.input'], environ=os.environ)
根据WSGIAPI规范(),不要使用os.environ
。使用应用程序的第一个位置参数environ
environ参数是一个字典
对象,包含CGI样式
环境变量。这个物体
必须是内置Python字典
(不是子类、UserDict或其他
字典仿真)和
允许应用程序修改
不管它想要什么样的词典。这个
词典还必须包括某些
WSGI所需变量(如中所述
后面的章节),也可能包括
特定于服务器的扩展变量,
按照约定命名的
下文将对其进行说明
粘贴了一些更详细的示例代码。请让我知道我应该改变它。啊,我没有看到环境是我的方法的一个论点。我认为这是一个愚蠢的错误。粘贴了一些更详细的示例代码。请让我知道我应该改变它。啊,我没有看到环境是我的方法的一个论点。我认为这是个愚蠢的错误。