概要
- formからGET、POSTメソッドでデータを送る。
- flaskでデータを処理する。
formでデータを送る
formでデータを送るのはwebの基本です。静的ページでやり取りする場合、具体的には次の流れになります。
- ブラウザでサーバにアクセスする
- サーバはformのページを返す(flask)
- ブラウザでformにデータを入力してbuttonで送信する(html)
- サーバは受けた結果を処理し、htmlに整形して送信する(flask)
- ブラウザはhtmlを表示する
ここでは、formそのものとその結果の2つのURLを用意する必要があります。
htmlのform
formはユーザに情報を入力させ、サーバにデータを送信することができます。
formタグにはactionとmethodの2つの属性を定義します。actionでは入力された情報を送信する宛先のURLを定義します。methodにはGETかPOSTのメソッドを書きます。GETとPOSTはhttpで情報を送信するときに使われるメソッドで、詳しくはほかのサイトに譲ります。
flaskでデータを受ける
flaskで受け取ったパラメータを処理するには、flask.requestモジュールを使います。
GETで受けたパラメータはrequest.args.get(myparam)
、POSTで受けたパラメータはrequest.form["myparam"]
で取得できます。
templateを使う
実際に送るhtmlですが、flaskを使う場合はtemplates
というディレクトリを作ってその中に入れておく必要があります。
サンプル
フォームに入力した内容をオウム返しするサンプルです。
サーバ側(flask)
from flask import Flask, request, render_template app = Flask(__name__) @app.route("/test_form") def test_form(): return render_template("test_form.html",title="test_form") @app.route("/result",methods=["POST"]) def mama(): return request.form["myparam"] + "と受信しました" if __name__ == "__main__": app.run()
クライアント側(html)
<!doctype html> <html> <head> <title>{{ title }}</title> </head> <body> テストフォーム<br> <form action="http://localhost:5000/result" method="POST"> <div> <label for="myparam">入力してください</label> <input name="myparam" id="myparam"> </div> <div> <button>submit</button> </div> </form> </body> </html>
参考
html
webを勉強するならやっぱりMozillaのドキュメントですね。