2015-12-16 2 views
1

Я хочу установить скрытое поле формы в список значений, а затем использовать список при отправке формы. Однако значение представляет собой строку вместо списка. Как использовать список get, который я передал форме в виде списка?Интерпретировать значение формы HTML как список в виде флэшки

<form method="POST" action="{{ url_for('action') }}"> 
    <input type="hidden" name="list" value="{{ some_list }}"/> 
    <input type="submit"> 
</form> 
@app.route('/action', methods=['POST']) 
def action(): 
    elements = request.form['list'] 
    list_length = len(elements) 
    ... 
+0

Я бы в идеале хотел бы вернуть значение в качестве исходного списка, но если это невозможно, то разбор строки может быть моим единственным вариантом – sookie

+1

Интересно, какой смысл делать это. Вы, очевидно, передаете 'some_list' в шаблон в первую очередь, чтобы его отобразить; так что у вас уже есть это на сервере, зачем передавать его клиенту и обратно? Лучше хранить его где-то, как сеанс между запросами. –

+0

@davidism: Я использую Jinja2, который идентифицирует списки – sookie

ответ

2

Когда HTML форма передается от клиента, он отправляет значения поля в виде строк. Предполагая, что значение, которое вы укажете в этом поле, выглядит как abc, def, 123, foo, тогда вы просто разделите значение на , и разделите все окружающие пробелы.

elements = [y for y in (x.strip() for x in request.form['list'].split(',')) if y] 

Вместо прохождения/анализ значения вперед и назад в скрытом поле формы, что вы, вероятно, ищете это сеанс. Это позволяет хранить JSON-сериализуемые значения по всем запросам.

elements = session.get('elements', []) # get existing data 
elements.append(len(data)) # do something to the data 
session['elements'] = data # store the new data 
+0

Спасибо за ваш ответ – sookie

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