2013-01-05 4 views
1

플라스크의 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> 요소를 사용할 수 없습니다.

<td>의 내부에 <form> 태그를 넣고 그것을 작동합니다 :

<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

관련 문제