2014-11-14 5 views
0

나는 DataTable에서 아약스 요청을 처리하기 위해 피라미드를 사용하고 있습니다.피라미드로 DataTables에서 요청 매개 변수를 변환

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

이 더 보이는 있도록 중첩 딕셔너리에 이러한 요청 PARAMS을 구문 분석 피라미드 (또는 다른 파이썬 라이브러리를) 알 수있는 방법이 있나요 : 요청 PARAMS는 다음과 같이 전달됩니다 키가

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

은'request.params'의 내용 중 첫 번째 문자열입니까? –

+0

@RafaelBarros 예, request.params MultiDict의 키입니다. –

답변

0

이것은 작동합니다. getone()getall() 메서드를 계속 사용할 수 있도록 중첩 된 MultiDict 집합으로 반환 할 수 있으면 좋겠지 만 피라미드에서 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