2010-11-29 40 views
2

我有一个关于Pylons的request.params的问题,它返回一个MultiDict对象。主塔:在request.params中保存排序?

request.params是否可靠地保存GET参数的顺序?

例如,如果我访问http://localhost:5000/hello/index?a=1&a=2并调用request.params,我可以保证返回的MultiDict对象的顺序如下吗?

>>> request.params 
MultiDict([('a', '1'), ('a', '2')]) 

我猜测不是,因为Python似乎有一个单独的OrderedMultiDict对象,用于排序MultiDicts。

如果没有,是否有其他方法可以获取GET参数并保留它们在Pylons中的排序?

回答

2

我记得,即使你可以让Pylons保持排序,你也不应该依赖这种行为,因为并不是所有的用户代理(浏览器,机器人等)都保持排序,这是外部的你的控制。

如果它是HTTP规范的一部分,它不会被可靠地遵循......我怀疑它是什么。

例如,假设用户代理是一个使用dicts处理查询参数的Python应用程序。