request関数でPostリクエストの値を取得する
Flaskを利用する上で、Formを用いてPostリクエストで値を渡すことは必須となる。
今回は、どのようにすれば、Postリクエストで値を渡すことができるのか解説する。
まず、FormでPostリクエストの値を送るためのViewとテンプレートを定義する。
- Viewの定義(home関数でsignup.htmlを表示するように記述する)
app = Flask(__name__)
@app.route('/home', methods=["GET", "POST"])
def home():
return render_template('signup.html')
if __name__ == '__main__':
app.run(debug=True)
- Postリクエストを送るテンプレートの定義(signup.html)
<form action="{{ url_for('home') }}" method="POST">
<label for="last_name">名字: </label><input type="text" name="last_name">
<label for="first_name">名前: </label><input type="text" name="first_name">
<input type="submit" value="送信">
</form>
上のように、シンプルにPostリクエストで、nameがlast_nameとfirst_nameを送信する画面を作成した。
ちなみに画面上には以下のように表示される。
次に、このPostリクエストで送信された値を処理するコードをViewに記載する。
このとき、Postリクエストかどうかリクエストメソッドを取得するにはrequest.methodを用いて、リクエストの値を取得するには、request.form.getを用いる。
テンプレート上で、form action="{{ url_for('home') }}"としているので、home関数上に定義する。
- Viewの定義(home関数でPostリクエストの際に、取得した値を処理するようにする)
app = Flask(__name__)
@app.route('/home', methods=["GET", "POST"])
def home():
if(request.method == 'POST'):# リクエストがPOSTの場合
last_name = request.form.get('last_name')# last_nameを取得
first_name = request.form.get('first_name')# first_nameを取得
return render_template('home.html', last_name=last_name, first_name=first_name)# last_name, first_nameをhome.htmlに送る
return render_template('signup.html')
if __name__ == '__main__':
app.run(debug=True)
- テンプレートの処理(home.htmlにlast_name, first_nameを表示させる)
<p>名前: {{first_name}}</p>
このようにすると、Postリクエストの結果、Viewの中で、送られたfirst_nameとlast_nameを取得して、テンプレートに渡すことができる。実行すると、ブラウザでは、以下のように表示できる。
以上、FlaskでのPostリクエストの方法でした。