2015-12-16 51 views
1

我想將隱藏表單字段設置爲值列表,然後在提交表單時使用列表。但是,該值似乎是一個字符串而不是一個列表。我如何使用作爲列表傳遞給表單的獲取列表?在Flask視圖中將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