※このページではアフィリエイト広告を利用しています

【Flask入門】フォームからデータを受け取る方法(GET・POST対応)

Python

PythonでWebアプリケーションを開発する際、ユーザーからの入力を受け取るフォームは欠かせません。Flaskを使えば、シンプルなコードでフォームを作成し、データを取得・処理することができます。

この記事では、Flaskでフォームを作成し、GETPOSTメソッドを使ってデータを受け取る方法について、初心者にもわかりやすく解説します。

本記事でわかること
  • FlaskでHTMLフォームを作る方法
  • GETPOSTメソッドの違いと使い分け
  • request.formでデータを取得する方法
  • ユーザー入力を画面に表示する方法
  • 簡単なバリデーション(空チェック)
スポンサーリンク
スポンサーリンク

環境の準備

まずは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: 非表示
バリデーション例空チェックなどの入力確認処理を追加できる

もっと学びたい人へ

タイトルとURLをコピーしました