こんにちは!今日は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

コメント