Python 处理mod_wsgi.input

Python 处理mod_wsgi.input,python,python-2.7,mod-wsgi,Python,Python 2.7,Mod Wsgi,我是python和mod_wsgi开发的新手。当我想从POST获取数据时,我读了envron['wsgi.input'],结果我得到了name=username&fullname=name&pass=password。现在我的问题是如何将其拆分以获取作为数组的输入。例如,要阅读类似于name=arraypost[0]?的内容,您可以拆分数据并将其传递到dict()中,以创建键、值对字典: post_dict = dict([item.split('=') for item in envron['

我是python和mod_wsgi开发的新手。当我想从POST获取数据时,我读了
envron['wsgi.input']
,结果我得到了
name=username&fullname=name&pass=password
。现在我的问题是如何将其拆分以获取作为数组的输入。例如,要阅读类似于
name=arraypost[0]

的内容,您可以拆分数据并将其传递到dict()中,以创建键、值对字典:

post_dict = dict([item.split('=') for item in envron['wsgi.input'].split('&')])
print post_dict['name']
print post_dict['fullname']
print post_dict['pass']

在这里,我将演示如何在Python3中实现这一点。使用
urllib.parse.parseqs
将其转换为列表字典

import urllib.parse

post = urllib.parse.parse_qs(environ['QUERY_STRING'])

# get value of first instance of POST var 'foo'
print(post.get(b'foo',[''])[0])

注意上面使用的
get()
。第一个参数是字节字符串,第二个参数是默认值。正如我所说,这是一个列表字典,因为我们立即从索引0获取,所以我们至少需要一个长度为零的字符串,这样我们就不会越界。

您应该使用一个微框架或WSGI组件库来为您完成所有这一切,因为它将为您节省大量时间并确保正确完成。请参阅Flask和Werkzeug以获得好的示例。您的dic是错误的,这里有一个示例:post_dict=dict([('s',4139),('guido',4127)])。你不用圆括号我不知道你的意思。dict构造函数不需要元组列表。它可以接受任何iterable,包括键值对的嵌套列表。你试过我的密码吗?它起作用了。