3.1 ルーティングと U R Lビルダー

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メソッドに関する詳細な情報を提供します。