2014-11-14 1 views
0

Я использую Pyramid для обработки запросов ajax от DataTable. В запросе PARAMS есть ключи, которые передаются в так:Преобразование параметров запроса из DataTables с помощью Pyramid

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

Есть ли способ сказать пирамиды (или другую библиотеку Python) для разбора этих запросов Params в гнездовой Словаре так это больше похоже:

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

является первой строкой содержания из 'request.params'? –

+0

@ RafaelBarros Да, это ключи от request.params MultiDict. –

ответ

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 
Смежные вопросы