PythonでWebアプリケーションを開発する際、ユーザーからの入力を受け取るフォームは欠かせません。Flaskを使えば、シンプルなコードでフォームを作成し、データを取得・処理することができます。
この記事では、Flaskでフォームを作成し、GET
・POST
メソッドを使ってデータを受け取る方法について、初心者にもわかりやすく解説します。
環境の準備
まずはFlaskをインストールしておきましょう。
pip install flask
windowsでの環境構築は以下をご参照下さい。
>>>【Flask入門】Windowsでの環境構築と簡単なアプリ作成
HTMLフォームを作成する
まずは基本となるフォーム画面を作ります。index.html
というファイルを作成して以下のように記述します。
templates/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>フォーム送信</title>
</head>
<body>
<h1>お問い合わせフォーム</h1>
<form method="POST" action="/submit">
<label>名前:</label>
<input type="text" name="username"><br><br>
<label>メッセージ:</label>
<textarea name="message"></textarea><br><br>
<input type="submit" value="送信">
</form>
</body>
</html>
Flaskアプリの作成
次に、フォームを処理するFlaskアプリを作ります。
app.py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/submit', methods=['POST'])
def submit():
username = request.form.get('username')
message = request.form.get('message')
# 簡単なバリデーション(空チェック)
if not username or not message:
error = "名前とメッセージは必須です。"
return render_template('index.html', error=error)
return f"こんにちは、{username}さん!<br>あなたのメッセージ:<br>{message}"
if __name__ == '__main__':
app.run(debug=True)
解説:各部分のポイント
@app.route('/')
トップページを表示するルートです。フォームを表示します。
@app.route('/submit', methods=['POST'])
フォームのaction="/submit"
で指定された送信先です。POST
メソッドで送信されたデータを処理します。
request.form.get()
フォームから送られたデータを取り出す関数です。辞書のように使います。
例:
username = request.form.get('username')
バリデーション(入力チェック)
フォームが空のまま送信された場合にエラーメッセージを表示するようにしています。
if not username or not message:
error = "名前とメッセージは必須です。"
return render_template('index.html', error=error)
HTMLに以下のようなエラーメッセージ表示の追加も可能です。
{% if error %}
<p style="color:red;">{{ error }}</p>
{% endif %}
GETメソッドでの送信(補足)
フォームでデータをGET
メソッドで送信することもできます。
<form method="GET" action="/submit">
この場合、request.args.get()
を使用してデータを取得します。
username = request.args.get('username')
ただし、GETはURLにデータが表示されるため、検索フォームなど公開しても問題ない情報向けに使いましょう。
実行方法
ターミナルで以下を実行するとアプリが立ち上がります。
python app.py
ブラウザで http://127.0.0.1:5000/
にアクセスしてください。
仮想環境での実行方法は以下をご参照下さい。
>>>【Flask入門】Windowsでの環境構築と簡単なアプリ作成
結果


まとめ
項目 | 内容 |
---|---|
フォーム作成 | HTMLの<form> タグで作成 |
データ取得方法 | request.form.get('name') (POST) |
メソッドの違い | GET : URLに表示 / POST : 非表示 |
バリデーション例 | 空チェックなどの入力確認処理を追加できる |