2013-01-05 109 views
1

使用Flask中的request.form.getlist,我只獲取列表的最後一個值。 下面的.py代碼和html相關。 如果我禁止以下三行,那麼我會得到完整列表,但這樣做時我錯過了html表格行的標題。燒瓶上的getlist

<form action="{{ url_for('show_entries')}}" method=get> 
<td width="50"><font size="2">{{ L }}</font></td> 
</form> 

我該怎麼辦?感謝您的任何提示!

from flask import Flask, render_template, request, url_for 

app = Flask(__name__) 

data = [ 
('t', 0, 'a'), 
('t', 0, 'b'), 
('t', 0, 'c'), 
('t', 0, 'd') 
] 

@app.route('/', methods=['GET', 'POST']) 
def show_entries(): 
    entries=[] 
    for (i,v) in enumerate(data): 
    entries.append(data[i][2]) 
    return render_template('layout2.html', entries=entries) 

@app.route('/get', methods=['GET', 'POST']) 
def get_entries(): 
    cl1=[] 
    cl1=request.form.getlist('cn') 
    return render_template('test2.html', cl1=cl1) 

if __name__ == "__main__": 
    app.debug = True 
    app.run() 

的layout2.html文件是:

<!DOCTYPE HTML> 
<table> 

{% for L in entries %} 
<tr> 
<form action="{{ url_for('show_entries')}}" method=get> 
<td width="50"><font size="2">{{ L }}</font></td> 
</form> 
<form action="{{ url_for('get_entries')}}" method=post> 
<td width=100 align=center><input type=text name=cn size=3 value=0.0></td> 
</tr> 
{% if loop.last==True %} 
    </table> 
    <br> 
    <div ALIGN=left> 
    <input type=submit value=Submit> 
    </form> 
    </div> 
{% endif %} 
{% endfor %} 

的test2.html是:

<!DOCTYPE HTML> 
<div ALIGN="center"> 
<td width="50"><font size="2" face="verdana" color="red">OUTPUT=</font></td> 
<form action="{{ url_for('get_entries')}}" method=get></form> 
<td width="50"><font size="2" face="verdana" color="red">{{ cl1 }}</font></td> 
</div> 

回答

2

您正在打開多個form元素,但僅關閉其中一個 - 這可能會導致瀏覽器僅發送最後一個表單 - 因此只會發送一個值。將你的form包裹在整個表格周圍(並刪除嵌套表格),並且getlist將起作用。

3

唯一直接後代的一個<tr>元件可以具有是<td><th>元件。那裏不能有<form>元素。

把你<form>標籤<td>內,它應該工作:

<td width="50"> 
    <form action="{{ url_for('show_entries')}}" method=get> 
     <font size="2">{{ L }}</font> 
    </form> 
</td> 

此外,您的HTML已經過時:

  • <font>標籤已被棄用。

  • 同樣,align屬性也被棄用。

CSS樣式的東西。

+0

謝謝,但getlist仍然只返回最後一個值... – mannaia

+0

換句話說,不推薦使用的代碼(真是遺憾......)對[getlist]沒有任何影響(http:// werkzeug。 pocoo.org/docs/datastructures/?highlight=getlist#werkzeug.datastructures.Headers.getlist)....請關注這個主題的標題... – mannaia