Найти - Пользователи
Полная версия: Кастомный порядок ключей в словаре
Начало » Python для новичков » Кастомный порядок ключей в словаре
1
WhiteTiger
Всем привет. Такая проблема. Делаю модулем requests post-запрос на сервер. Данные для отправки (параметры post-запроса) он принимает в виде словаря. Словарь (если я не ошибаюсь) - не упорядоченный тип данных. А мне нужно чтоб POST-поля в параметрах стояли в определённом порядке. Например чтоб поле Х было обязательно в самом конце набора POST-параметров. Пытался добавлять его в словарь самым последним, но ячейка с ним попадает в середину словаря.
o7412369815963
Для чего?
Можете дополнительно передавать порядок ключей списком, и формировать OrderedDict на сервере.
FishHook
Порядок следования можно задать в ключах словаря,
dct = { "user_%s" % index: x.id for index, x in enumerate(users)}
plusplus
WhiteTiger
Данные для отправки (параметры post-запроса) он принимает в виде словаря.
:param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`.
Судя по докстрингу можно передавать не только словарь, но и строку. Сформируй строку сам с нужным порядком и передай её.

o7412369815963
Для чего?Можете дополнительно передавать порядок ключей списком, и формировать OrderedDict на сервере.
Он пишет бота для стороннего ресурса, судя по всему. Определенный порядок данных в POST-запросе требуется, например, на aspx сайтах, иначе не прокатывает запрос.
WhiteTiger
Да, пишу что-то типа бота. К сожалению строка не прокатывает с requests. Решил через http.client. В нём параметры принимаются в виде строки.
plusplus
WhiteTiger
Да, пишу что-то типа бота. К сожалению строка не прокатывает с requests. Решил через http.client. В нём параметры принимаются в виде строки.

Ну каким-то образом requests обязан превратить словарь в строку, чтобы передать её по протоколу HTTP. Надо просто поизучать исходный код и посмотреть как это делается или попытаться нагуглить.
dimy44
А просто socket сейчас уже никто не юзает? (интересно просто)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB