2012-04-27 1 views
12

토네이도 * 웹 프레임 워크의 HTTPRequest 클래스 maps GET and POST arguments to lists. 나는 이유를 이해한다 - 주어진 인자 이름이 여러 번 사용되는 경우에. 그러나 일부 RequestHandlers의 경우 이것은 고통스런 일입니다. 예를 들어 json 객체를 전달하고 서버에서 그대로 파싱하고 싶습니다.토네이도는 GET 및 POST 인수를 목록에 매핑합니다. 이 "기능"을 어떻게 해제 할 수 있습니까?

변경되지 않은 json을 토네이도/사이클론 서버로 보낼 수 있도록지도 투리스트 동작을 비활성화하는 가장 쉬운 방법은 무엇입니까?

* 실제로 사이클론은 구현 차이가 있습니다.

답변

30

:

self.get_argument("ID", default=None, strip=False) 

이 단일 항목을 반환합니다. 당신이 JSON 객체로 인수를 설정하려면

당신은 아주 쉽게 그렇게 할 수 있습니다 :

json.dumps({ k: self.get_argument(k) for k in self.request.arguments }) 
+0

고마워! 인수 전체를 단일 json 객체로 반환하려는 경우 어떻게해야합니까? 전체 사전을 반복하고 각 키에 대해 get_argument를 호출하여 재구성 할 수 있지만 비효율적 인 것처럼 보입니다. – Abe

+3

json.dumps ({k : self.request.arguments의 k에 대한 self.get_argument (k)}) - 실제로 그렇게 비효율적이지는 않습니다. – koblas

3

나는 "너는 운이 좋다"고 할 것입니다. 문제의 수업을 재작 성할 수는 있지만 (재미 있지는 않은 것처럼 보입니다) 이외에도 많은 옵션이 표시되지 않습니다.


저는 그냥 독해력을 사용합니다. 대신 직접 당신이 접근 기능을 사용한다 self.request.arguments에 액세스

{k:''.join(v) for k,v in req.arguments.iteritems()} 
+0

는 파이썬 2.X에서 사용 가능한하지 –

+1

V3ss0n'인수의 = { 'foo는':('1'@ (2) ','2 ','3 ',)}; print {k :' '. . – cwallenpoole

+0

@cwallenpoole은 2.7 이상에서만 존재하지 않습니까? https://docs.python.org/2.7/whatsnew/2.7.html#python-3-1-features – z0r