PR

【Python】Flask の url_for でパラメータを渡す方法

python-dev Flask
python-dev
この記事は約3分で読めます。
記事内に広告が含まれています。

この記事では、Flask の url_for 関数を使用して、クエリパラメータとURIパラメータをどのように渡すかについて説明します。

url_for とは

Flaskにおける url_for 関数は、アプリケーション内のエンドポイントに対するURLを動的に生成するために使用されます。

from flask import Flask, url_for

app = Flask(__name__)

@app.route('/hello')
def hello():
    return 'Hello, World!'

with app.test_request_context():
    print(url_for('hello'))

これが python 側での基本的な使い方です。

スポンサーリンク

Flask を使用する際は、画面を Jinja2 で構成することも多いと思います。

Flaskのテンプレートエンジン Jinja2 では、url_for を使用して動的にURLを生成できます。例えば、ユーザープロフィールページへのリンクを作成する場合、以下のように書きます。

<a href="{{ url_for('user_profile') }}">MY Profile</a>

例えば、この例であればプロフィール画面に遷移する記述です。

python 側で定義した関数で遷移先の jinja2 テンプレートの HTMLファイルを指定します。

クエリパラメータの指定と値の取得

クエリパラメータの指定は以下のように書きます。

<a href="{{ url_for('user_profile', name='Taro') }}">MY Profile</a>

カンマで追加するだけですね。

Python 側では、request.args.get('name') を使って受け取れます。

URIパラメータの指定と値の取得

URIパラメータの指定は以下のように書きます。

<a href="{{ url_for('user_profile', name='Taro') }}">MY Profile</a>

書き方としてはクエリパラメータと同じです。 Python 側での受け取り方が異なるので、そこだけ覚えておけばよさそうですね。

@app.route('/user/<username>')
def user_profile(username):
    print(username)

URIパラメータの場合は、パスの一部として渡されるので、app.routeでの定義が必要です。

また、引数として受け取るようにすることで、直接値を利用できます。

スポンサーリンク

参考書籍

オライリー信者なので。


おわりに

Flask は軽量なPython のWebアプリケーションフレームワークなので、利用する機会は多いですよね。

業務で実際に使っているので、備忘録としての用途ですがお役に立てばと思います。

コメント

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