Flask Webアプリケーションで URLパラメータを取得する

Flask Webアプリケーションで URLパラメータを取得するコードを紹介します。

概要

Flaskアプリケーションでアクセスした際のURLのパラメータを取得したい場合があります。
Flaskアプリケーションでは、request オブジェクトを利用すると、URLパラメーターを取得できます。

書式

args.get メソッドでパラメータを取得します。書式は以下です。

request.args.get([パラメーター名],[デフォルト値])

プログラム

Flaskアプリケーションを作成します。

コード

以下のコードを記述します。

index.html
<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
  <h1>URLパラメーター取得のデモ</h1>
  <p>{{ AppMessage }}</p>
</body>
</html>

app.py
from flask import Flask, render_template, request
app = Flask(__name__)

# Make the WSGI interface available at the top level so wfastcgi can get it.
wsgi_app = app.wsgi_app


@app.route('/')
def hello():
   name = request.args.get('user','Default')
   return render_template("index.html", AppMessage = 'ようこそ' + name + 'さん')

if __name__ == '__main__':
    import os
    HOST = os.environ.get('SERVER_HOST', 'localhost')
    try:
        PORT = int(os.environ.get('SERVER_PORT', '5555'))
    except ValueError:
        PORT = 5555
    app.run(HOST, PORT)

解説

index.html

AppMessageプレースホルダを記述しています。

app.py

importに、render_template と request を追記しています。

from flask import Flask, render_template, request


request.args.get() メソッドを呼び出します。第一引数の user のパラメーターの値を取得します。
値が取得できない場合は、"Default" を利用します。取得した値を name 変数に代入します。

アプリケーションルートにアクセスした際にindex.htmlのテンプレートを返します。name変数を含むメッセージをAppMessageプレースホルダに設定します。

@app.route('/')
def hello():
   name = request.args.get('user','Default')
   return render_template("index.html", AppMessage = 'ようこそ' + name + 'さん')

実行結果

プロジェクトを実行します。下図のページが表示されます。アプリケーションルートのURLでページが表示されますが、 パラメーターは無いため、ページのメッセージは「ようこそDefaultさん」が表示されます。

Flask Webアプリケーションで URLパラメータを取得する:画像1

以下のURLにアクセスします。

(アプリケーションルート)/?user=penguin


userパラメーターに設定されている"penguin"の値が取得でき、「ようこそpenguinさん」のメッセージが表示されます。

Flask Webアプリケーションで URLパラメータを取得する:画像2


Flask WebアプリケーションでURLパラメーターを取得できました。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2024-12-28
Copyright © 1995–2025 iPentec all rights reserverd.