この記事では、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アプリケーションフレームワークなので、利用する機会は多いですよね。
業務で実際に使っているので、備忘録としての用途ですがお役に立てばと思います。
コメント