Найти - Пользователи
Полная версия: Обработка объектов Python в request.POST
Начало » Django » Обработка объектов Python в request.POST
1 2
fongostev
Вопрос собственно: можно ли в request.POST передать произвольный объект Python со страницы в views?
fata1ex
Лучше скажите, чего вы хотите добиться. И почитайте про http-запросы.

Передать приложению произвольный post-запрос, который обработает ваша вьюшка, разумеется, можно. На этом построен весь интернет.
fongostev
Хотя и эта проблема решилась. Вопрос был в том, что я не могу понять, как можно передать произвольный объект на страницу, а потом из поля hidden получить его обратно в том же виде.
reclosedev
На крайний случай можно сериализовать объект с помощью pickle, конвертировать в base64 (или похожее), подписать его для безопасности, и можно вставлять эту строку куда угодно.
FishHook
fongostev
Хотя и эта проблема решилась. Вопрос был в том, что я не могу понять, как можно передать произвольный объект на страницу, а потом из поля hidden получить его обратно в том же виде.
А что за объект, можно поинтересоваться и, главное, зачем его вставлять в код таким хитрым образом?
fongostev
FishHook, грубо говоря, надо вывести список параметров серверов
определенного типа, а потом при нажатии на кнопку передать на соответствующий сервер байтовую строку с параметрами сервера, я сначала строил с объекта типа “сервер” объект формы, и передавал на страницу словарь, где ключи - объекты формы, а значения - объекты серверов, но это не сработало, поэтому я передавал необходимую байтовую строку в Latin-1, потому-что в других кодировках получалась ошибка перевода в юникод.
reclosedev, а Вы правы насчет pickle, про него я забыл
unkier
мрак
FishHook
fongostev
FishHook, грубо говоря, надо вывести список параметров серверов
определенного типа, а потом при нажатии на кнопку передать на соответствующий сервер байтовую строку с параметрами сервера, я сначала строил с объекта типа “сервер” объект формы, и передавал на страницу словарь, где ключи - объекты формы, а значения - объекты серверов, но это не сработало, поэтому я передавал необходимую байтовую строку в Latin-1, потому-что в других кодировках получалась ошибка перевода в юникод.
reclosedev, а Вы правы насчет pickle, про него я забыл

Какой HTML-код должен получиться в кнопке и в каком виде у Вас хранятся параметры серверов?
fongostev
FishHook
Например, есть часть шаблона:
      <table border="0" cellpadding="7" cellspacing="0">
      {% for webslot in slotlist %}
	  {% if webslot.run %}
	    <tr bgcolor="green">
	  {% endif %}
	  {% if webslot.stop %}
	    <tr bgcolor="yellow">
	  {% endif %}
	  {% if webslot.err %}
	    <tr bgcolor="red">
	  {% endif %}
	  <td>{{ webslot.Name }}</td>
	  <td>{{ webslot.Type }}</td>
	  <td>{{ webslot.pop_ip_port }}</td>
	  <td>{{ webslot.Status }}</td>
<td>
<form method="post">
<input type="submit" value="Restart" name="restart" onclick="location.href='/restart/?{{ webslot.pop_ip_port }}'" />
<input type="hidden" name="need" value="{{ webslot.SlotState }}" />
</form>
</td>
<td>
<form method="post">
<input type="submit" value="Params" name="slot_params" onclick="location.href='/change/slot/?{{ webslot.pop_ip_port }}'" />
<input type="hidden" name="change_slot" value="{{ webslot }}" />
</form>
</td>
</tr>
      {% endfor %}
      </table>
И при нажатии кнопки через скрытое поле ‘change_slot’ идет передача объекта во views.
При рендеринге этой страницы возникает исключение:
Exception Type:	TemplateSyntaxError
Exception Value:	
Caught AttributeError while rendering: 'function' object has no attribute 'get'
Exception Location:	/usr/lib/python2.7/dist-packages/django/forms/forms.py in non_field_errors, line 243
Причем, если в скрытое поле поставить одно из полей объекта, то все нормально
unkier
я сделаю предположение, что вы пытаетесь сделать что то противоестественное.
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