3.1 ルーティングとURLビルダー #
この記事では、FlaskのルーティングとURLビルダーについて説明します。ルーティングは、URLと関数を関連付ける重要な概念です。URLビルダーは、アプリケーション内でURLを動的に生成するためのツールです。
1. ルーティング #
ルーティングは、クライアントからのリクエストに対して適切なビュー関数を呼び出すための仕組みです。Flaskでは、デコレータ@app.route()
を使ってルーティングを定義します。
以下の例では、/
というURLにアクセスしたときに、index関数が呼び出されます。
@app.route('/')
def index():
return 'Hello, World!'
2. ルーティング変数 #
URL内に変数を含めることができます。これにより、動的なURLを生成できます。変数は、URL内で<variable_name>の形式で指定します。
以下の例では、/user/というURLにアクセスしたときに、user関数が呼び出されます。また、部分は、関数の引数として渡されます。
@app.route('/user/<username>')
def user(username):
return f'Hello, {username}!'
変数の型も指定できます。例えば、<int:user_id>
と指定すると、user_id変数は整数型として扱われます。
3. HTTPメソッド #
HTTPメソッドは、リクエストの種類を表すもので、GET、POST、PUT、DELETEなどがあります。デフォルトでは、FlaskのルーティングはGETメソッドに対応します。他のHTTPメソッドを対応させるには、methods
パラメータを使って指定します。
以下の例では、/login
というURLに対してGETとPOSTの両方のメソッドに対応しています。
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return 'ログイン処理'
else:
return 'ログインフォーム'
4. URLビルダー #
URLビルダーは、アプリケーション内でURLを動的に生成するためのツールです。Flaskでは、url_for関数を使ってURLを生成できます。
以下の例では、url_for関数を使ってuser関数に対応するURLを生成しています。
from flask import url_for
url = url_for('user', username='John')
url_for関数の第1引数は、関数名(エンドポイント名)です。2引数以降は、URL内の変数に対応するキーワード引数を指定します。上記の例では、username変数に’John’を指定しています。
生成されたURLは、アプリケーションの設定やルーティングに応じて変わります。このため、url_for関数を使ってURLを生成することで、アプリケーション内で一貫したURLを維持できます。
また、url_for関数は、外部URLや静的ファイルのURLを生成することもできます。例えば、静的ファイルのURLを生成するには、url_for(‘static’, filename=‘path/to/file’)と指定します。
url = url_for('static', filename='css/styles.css')
この例では、/static/css/styles.cssというURLが生成されます。
5. ブループリントとURLビルダー #
前述の記事でブループリントについて紹介しました。ブループリントを使用する場合、url_for関数で生成するURLは、ブループリント名を含める必要があります。ブループリント名と関数名は、'.‘で区切って指定します。
例えば、exampleというブループリントでuser関数を定義している場合、以下のようにURLを生成します。
url = url_for('example.user', username='John')
これで、適切なURLが生成されます。
以上が、FlaskのルーティングとURLビルダーについての説明です。この知識を使って、アプリケーション内で効果的なルーティングと動的なURL生成を実現できます。次の記事「3.2 HTTPメソッド (GET, POST, PUT, DELETE)」では、HTTPメソッドに関する詳細な情報を提供します。