Подтвердить что ты не робот

Tornado отображает GET и POST аргументы в списки. Как отключить эту функцию?

Класс HTTPRequest в веб-инфраструктуре торнадо * отображает аргументы GET и POST в списки. Я понимаю, почему - если имя аргумента используется несколько раз. Но для некоторых RequestHandlers это боль. Например, если я хочу передать объект json и проанализировать его как есть на сервере.

Какой самый простой способ отключить поведение "список-к-списку", чтобы я мог отправить неизменный json на сервер торнадо/циклона?

* Циклон, на самом деле, там, где есть разница в реализации.

4b9b3361

Ответ 1

Вместо прямого доступа к self.request.arguments вы должны использовать функции доступа:

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

Это возвращает один элемент.

Если вы хотите превратить аргументы в объект JSON, вы можете легко сделать это:

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

Ответ 2

Я собираюсь пойти с "вам не повезло". Вы можете переписать класс, о котором идет речь (похоже, это не будет весело), ​​но помимо этого я не вижу много вариантов.


Я бы просто использовал понимание dict.

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