我正在使用 Python 实现服务器端过滤以服务 KendoUI 的 Grid 组件。
我面临的问题是它默认生成的 AJAX 调用似乎与 Flask 的内置 URL 解析器和 Python 的urlparse
模块都不兼容。
这是我遇到问题的查询字符串类型的人为示例:a=b&c=d&foo[bar]=baz&foo[baz]=qis&foo[qis]=bar
这是我想要的结果:
{
'a': 'b',
'c': 'd',
'foo': {
'bar': 'baz',
'baz': 'qis',
'qis': bar'
}
}
不幸的是request.args
,如果将其传递给 Flask 端点,您会得到以下结果:
{
'a': 'b',
'c': 'd',
'foo[bar]': 'baz'
'foo[baz]': 'qis'
'foo[qis]': 'bar'
}
更糟糕的是,在实践中,该结构可能有好几层深。将列过滤foo
为仅值等于的行的基本调用'bar'
将产生以下结果:
{
'filter[logic]': 'and',
'filter[filters][0][value]': 'bar',
'filter[filters][0][field]': 'foo',
'filter[filters][0][operator]': 'eq'
}
我检查了 RFC,它要求查询字符串只包含“非分层”数据。虽然我相信它指的是 URI 所代表的对象,但在我能找到的规范中没有对这种类型的数据结构的规定。
我开始编写一个函数,它接受一个参数字典并返回它们所代表的嵌套结构,但我很快意识到这是一个微妙的问题,而且肯定有人以前遇到过这个问题。
是否有人知道将以我想要的方式解析这些参数的模块,或者我可能忽略的解析它们的优雅方式?