✏️

【Flask入門】Flaskでフォームを作って入力を受け取るまで(コード解説編)

に公開

【Flask入門】Flaskでフォームを作って入力を受け取るまで(コード解説編)

前回の記事では「「Flask入門】Flaskでフォームを作って入力を受け取るまで」でフォームから入力を送信できるところまで作りました。
今回はそのコードを1行ずつ解説していきます。


app.py の解説

from flask import Flask, request, render_template

flask ライブラリから必要な機能をインポートしています。

  • Flask : アプリ本体を作るためのクラス
  • request : フォームなどから送られたデータを受け取るためのオブジェクト
  • render_template : HTMLファイルを表示するための関数
app = Flask(__name__)

Flask クラスを使ってアプリの本体 (app) を作成しています。
__name__ は Python の特殊変数で、現在のファイルがアプリの「入口」であることを Flask に伝えています。

@app.route("/")
def index():
    return render_template("index.html")
  • @app.route("/") : この関数に「URL / にアクセスしたときの処理」を登録する、という意味。
  • index() : / にアクセスされたときに呼ばれる関数。
  • render_template("index.html") : templates/index.html を呼び出して画面に表示する。
    👉 これで「トップページにアクセスすると index.html が表示される」仕組みになっています。
@app.route("/submit", methods=["POST"])
def submit():
    log = request.form["log"]
    return f"受け取りました: {log}"
  • @app.route("/submit", methods=["POST"]) :
    • /submit というURLにアクセスされたときの処理を登録。
    • methods=["POST"] は「フォーム送信時の POST リクエストを受け付ける」指定。
  • request.form["log"] :
    • HTMLフォームの <input name="log"> に入力された文字を取り出す。
  • return f"受け取りました: {log}" :入力された内容を画面に返す。
    • f"文字列{変数}" は f文字列(フォーマット文字列)というPythonの書き方。
if __name__ == "__main__":
    app.run(debug=True)
  • このファイルが直接実行された場合にアプリを起動する、という意味。
  • app.run(debug=True) : Flaskの開発用サーバを起動。debug=True を付けるとコードを直すたびに自動でリロードされる。

index.html の解説

<h1>Hello, 学習ログ!</h1>
<form action="/submit" method="post">
    <input type="text" name="log" placeholder="今日の学習ログ">
    <button type="submit">送信</button>
</form>
  • <form action="/submit" method="post"> :
    • 入力内容を /submit に送信(POSTリクエスト)するフォーム。
  • <input type="text" name="log"> :
    • テキスト入力欄。
    • name="log" がサーバ側(Python)でデータを受け取るときのキーになる。
  • <button type="submit">送信</button> :
    • 送信ボタンを押すとフォームの内容がサーバに送られる。

まとめ

ここまでで、Flask アプリのコードが「どう動いているか」を理解できました。

  • @app.route でURLごとの処理を登録する
  • render_template でHTMLを表示する
  • request.form でフォームから送信されたデータを受け取る

次のステップ

ここまでで「フォームに入力した内容を受け取る」基本の流れができました。
次は、入力内容をファイルやデータベースに保存して「学習ログアプリ」として形にしていきます!

Discussion