Pythonを使用して、KendoUIのグリッドコンポーネントを提供するサーバー側フィルタリングの実装に取り組んでいます。
私が直面している問題は、デフォルトで生成される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が表すオブジェクトを参照していると思いますが、仕様にはこのタイプのデータ構造の規定はありません。
paramsの辞書を取り、それらが表すネストされた構造を返す関数を書き始めましたが、それが微妙な問題であり、確かに誰かが以前にこの問題を抱えていたことに気づきました。
これらのパラメーターを私が望む方法で解析するモジュール、またはおそらく見落としているエレガントな方法でこれらのパラメーターを解析するモジュールを知っている人はいますか?