formタグ内のinput要素をリストで受け取る。
と
より
formタグのname要素は複数あっても問題なく、また、同一のname要素だとflaskではリストで受け取ることが出来る。これほんと便利。
てことでソース
from flask import Flask,render_template,url_for,request,redirect app = Flask(__name__) @app.route('/') def hello(): return render_template('test.html') @app.route('/posttest',methods = ['POST']) def posttest(): print(request.form.getlist('num')) print(request.form['action']) return redirect(url_for('hello')) if __name__ == '__main__': app.run(debug=True)
<!DOCTYPE html> <html> <head> <meta charset = "utf-8" /> <title>フォームテスト</title> </head> <form action = {{url_for('posttest')}} method = "POST"> <input type = 'text' name = "num" /> <input type = 'text' name = "num" /> <input type = 'text' name = "num" /> <input type = 'text' name = "num" /> <input type = 'text' name = "num" /> <button type = "submit" name = "action" value = 'submit1'>submit</button> <button type = "submit" name = "action" value = 'submit2'>submit2</button> </form> </html>
python部分のrequest.form.getlist(【name要素】)
の部分でHTMLテンプレート部分のFormタグの同一要素をリストで受け取ることが出来る。
ちなみにボタンも2つ付けてみたが、これ実はbuttonタグのvalue要素もPOSTされてるのでname要素を同一にしておけばvalue要素も受け取ることが可能。 ボタンによって処理を分けたいときはこれでOK
どっちもわかるとすごく書かなきゃいけないコードの量が減ると思うので、便利。