こんにちは!今日はPythonのWebフレームワーク、Flaskでurl_for
関数を使って引数を取る関数を実行し、値を受け取る方法についてご紹介します。
url_forとは?
Flaskのurl_for
関数は、特定のビュー関数へのURLを動的に生成するためのものです。直接URLを記述するのではなく、url_for
関数を使ってURLを生成することで、もしルーティングが変更された場合でも自動的に対応することができます。
引数を取るビュー関数とurl_for
ビュー関数が引数を取る場合、それらの引数はurl_for
関数にも渡すことができます。その際、引数はURLの一部として組み込まれます。
では、実際にユーザーのIDを引数として取り、そのIDに基づく情報を表示する例を見てみましょう。
from flask import Flask, render_template, url_for app = Flask(__name__) @app.route('/') def home(): return render_template('home.html') @app.route('/user/<username>') def profile(username): return render_template('user.html', name=username) if __name__ == '__main__': app.run(debug=True)
このプログラムでは、/user/<username>
の形でルーティングを指定しています。ここで <username>
は変数部分で、この部分に実際のユーザー名が入ります。そして、そのユーザー名が profile
関数の username
引数として受け取られます。
そしてHTMLテンプレート内で url_for
を使う際には、引数を指定してやる必要があります。
home.html:
<html>
<body>
<h1>Home Page</h1>
<p>Welcome to the home page!</p>
<a href="{{ url_for('profile', username='John') }}">John's Profile</a>
</body>
</html>
url_for
関数の第一引数にビュー関数の名前を、第二引数以降にそのビュー関数の引数を指定しています。
その結果、このリンクをクリックすると /user/John
というURLに移動し、Johnのプロフィールページが表示されます。
このように url_for
関数を使うことで、動的なURLを生成することが可能です。Flaskを使ったWebアプリケーション開発の際には、ぜひ url_for
を活用してみてください。
参照:https://qiita.com/Eternal_door/items/ba855cd62e732a706b21
参照:https://qiita.com/5zm/items/c8384aa7b7aae924135c
コメント