Здание HTML-ФОРМЫ / запрос Django. Справка POST

Я не уверен, являюсь ли я просто зданием формы, которому повреждают или не размышление об этом правильный путь. Я пытаюсь создать форму, подобную Gmail, 'составляют' форму, которая имеет загрузчик изображения Ajax. У меня есть часть кода, который загружает изображение и возвращает хорошо работающий идентификатор изображения. После того как я получаю идентификатор изображения назад, я попытался добавить его к своей форме в скрытом поле флажка. Я хочу позволить пользователям загружать повторные изображения, и я также хотел бы сохранить все свои скрытые флажки тем же именем, таким образом, я могу легко выполнить итерации по значениям. По существу это:

Сторона клиента (это от Gmail, но на моем они будут скрыты):

<input type="checkbox" checked="" value="125e6e5e7d8a2601_125e6e5e7d8a2601_0.2_-1" name="attach" id=":4s"/>
<input type="checkbox" checked="" value="125e6e5e7d8a2601_125e6e5e7d8a2601_0.1_-1" name="attach" id=":50"/>

Сторона сервера:

       for picture_id in request.POST["attach"]:
            #do stuff here with the picture_id

К сожалению, я только получаю один из picture_ids и запроса. POST ["присоединение"] выполняет итерации по нему как строка. Я не уверен, как решить мой вопрос и отправить все идентификаторы изображения, не используя что-то как форма <select> где несколько объектов могут быть выбраны, потому что я должен был бы вручную добавить объекты и выбрать их.

Надо надеяться, это объяснение является четким, я уверен, что просто пропускаю что-то тривиальное. Спасибо за справку заранее!

5
задан Jordan Messina 31 December 2009 в 23:08
поделиться

2 ответа

Если вы ожидаете список для ключа attach, вы должны использовать request.POST.getlist('attach'). Делая request.POST['attach'], вы получите только последнее значение, которое является строкой.

С Новым годом!

.
17
ответ дан 18 December 2019 в 09:50
поделиться

Еще раз укажу моему старому другу на плагин jQuery taconite. Если вы используете AJAX для передачи изображения на сервер, попробуйте вернуть ответ из таконита, который вносит несколько изменений (закрепляет идентификатор в одном месте, добавляет скрытый вход в другое место и т.д.) на ваш DOM. Он также может запустить JS, чтобы сделать некоторые другие вещи в окружении страницы. Очень, очень удобно.

Что касается использования одного и того же имени для нескольких полей input, я не уверен, что это работает так, как Вам хотелось бы. Используя плагин Live HTTP Headers для Firefox, я вижу foo=1&foo=2&foo=3&foo=4&foo=5&foo=6 передается , но и PHP, и Django передают только последнее значение, а не массив. Вы можете попробовать создать имена типа "attach_1", "attach_2" и т.д. и просто пройтись по вашим POST-значениям и высасывать их таким образом. Либо так, либо получите необработанные POST-данные и разберитесь с ними сами.

Смотрите ответ elo80ka, как это сделать. (Ты каждый день учишься чему-то новому!)

0
ответ дан 18 December 2019 в 09:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: