我正在使用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'
}
}
不幸的是,如果将其传递给Flask端点,则会得到以下request.args
:
{
'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所代表的对象,但在规范中,我找不到这种数据结构的规定。我开始编写一个函数,以接受参数字典并返回它们表示的嵌套结构,但很快我意识到这是一个微妙的问题,肯定有人曾经遇到过这个问题。
是否有人知道任何可以按照我想要的方式解析这些参数的模块,或者我可能忽略了的优雅解析方法?
$.ajax
方法配置如何进行CRUD操作。看起来我可以使用JSON。不过,这似乎是Python中很有用的东西,因为显然PHP和RoR都可以处理在查询字符串中传递的嵌套字典。 - Lyndsy Simon