2014-07-04 2 views
2

Может кто-нибудь указать мне в правильном направлении. По сути, у меня есть <form>, который имеет переменное количество полей:Django request.POST словарь со стороны клиента на стороне сервера

<input value="1" name="cat"> 
<input value="2" name="dog"> 
<input value="3" name="tiger"> 

Когда я смотрю на request.POST, словарь порядок выключен:

{'dog':['2'], 'cat':[1], 'tiger':['3']} 

Я понимаю, что словарь заказывающий не поддерживается в пределах Python - однако мне нужен способ получить этот заказ обратно на бэкэнд.

Как я мог это сделать? Моя первая идея - использовать JS, но я надеялся, что будет лучший способ.

+0

Использование коллекций. Закупочная документация ([пункты]) Подробнее [здесь] (https://docs.python.org/2/library/collections.html#collections.OrderedDict) – Nobi

+0

это зависит от того, что вам нужно после, но вы можете преобразовать ваш dict в список кортежей: http://stackoverflow.com/questions/613183/python-sort-a-dictionary-by-value – Freelancer

+0

Я думаю, что запрос POST приходит в неупорядоченном состоянии. Django преобразует HTTP-запрос в словарь. Мне нужно было бы захватить этот процесс, чтобы использовать вышеуказанный метод - правильно? – Kris

ответ

2

Для тех, кто спрашивает, почему вам нужно полагаться на порядок полей - бывают случаи. В моем случае я принимал IPN PayPal, который требовал, чтобы данные были хэшированы в правильном порядке для ответа.

Во всяком случае, это был мой первоначальный вопрос: Retrieve POST data in the order they were sent in in Django

Вы можете в основном использовать HttpRequest.body (это называлось raw_post_data в 1.4 и ниже). Однако - помните, что браузер должен отправить данные, и я не знаю, гарантируют ли браузер порядок полей формы при отправке формы.

+0

Я видел это в документах, поэтому сейчас я играю с ним. Благодаря! – Kris

Смежные вопросы