使用Pyramid从DataTables转换请求参数

时间:2014-11-14 00:30:30

标签: python pyramid pylons

我正在使用Pyramid来处理来自DataTable的ajax请求。请求参数的密钥传递方式如下:

'columns[0][search]', 'columns[1][search]', 'columns[0][data]', 'columns[0][data]'

有没有办法告诉金字塔(或其他python库)将这些请求参数解析为嵌套的dict,所以它看起来更像:

{'columns': {
    '0': {'search': X, 'data': X}, 
    '1': {'search': X, 'data': X},
}}

1 个答案:

答案 0 :(得分:0)

这很有效。如果我可以将它作为一组嵌套的MultiDicts返回,那将是很好的,所以我可以继续使用getone()getall()方法,但我似乎无法实例化MultiDicts来自金字塔。

def unflatten_multidict(multidict):
    d = {}
    for k in multidict.keys():
        m = re.match(r'^([^\[\]]+)((?:\[[^\[\]]+\])+)', k)
        if m:
            attr = m.group(1)
            lastd = d.setdefault(attr, {})
            subkeys = re.findall(r'\[([^\[\]]+)\]', m.group(2))
            for i, subkey in enumerate(subkeys):
                if i < len(subkeys) - 1:
                    lastd = lastd.setdefault(subkey, {})
                else:
                    lastd[subkey] = multidict.get(k)
        else:
            d[k] = multidict.get(k)

    return d