※このページではアフィリエイト広告を利用しています

【Flask入門】ルーティングとビュー関数

Python

Flaskを使ってWebアプリケーションを開発する際、最も重要な機能のひとつが「ルーティング」です。ルーティングは、URLに基づいて特定の処理を実行する方法を提供します。このガイドでは、Flaskのルーティングとビュー関数について、わかりやすく説明し、実際に簡単なページ遷移を作成しています。

スポンサーリンク
スポンサーリンク

ルーティングとは?

Flaskにおける「ルーティング」とは、特定のURLにアクセスした際に、どのビュー関数(処理)を実行するかを決定する仕組みです。例えば、http://localhost:5000/にアクセスしたとき、index()という関数を実行する、というように設定します。

ルーティングの基本的な流れ

  1. ユーザーがブラウザで特定のURLにアクセスします。
  2. FlaskはそのURLに関連するビュー関数を探して実行します。
  3. ビュー関数は処理を行い、その結果をブラウザに返します。

ビュー関数とは?

ビュー関数は、ルーティングによって呼び出されるPythonの関数で、Webアプリケーションが返すレスポンスを定義します。例えば、あるページにアクセスしたときに表示されるHTMLコードを返したり、データを返したりします。

例えば、index()というビュー関数は、/というURLにアクセスしたときに表示するコンテンツを定義します。

Flaskでルーティングとビュー関数を設定する方法

Flaskでは、ルートを設定するために@app.route()というデコレーターを使います。これにより、特定のURLにアクセスされたときに実行されるビュー関数を指定できます。

基本的なルーティングとビュー関数

まず、Flaskアプリケーションを作成して、基本的なルーティングとビュー関数を設定しましょう。

from flask import Flask

app = Flask(__name__)

# ルートURL ('/') にアクセスされたときに実行されるビュー関数
@app.route('/')
def home():
    return 'Hello, Welcome to the Home Page!'

# 追加のURL ('/about') にアクセスされたときに実行されるビュー関数
@app.route('/about')
def about():
    return 'This is the About Page.'

if __name__ == '__main__':
    app.run(debug=True)

コードの説明

  • @app.route('/'):このデコレーターは、/というURLにアクセスされた際に実行される関数home()を定義しています。
  • home()関数は、'Hello, Welcome to the Home Page!'という文字列をブラウザに返します。
  • 同様に、@app.route('/about')は、/aboutというURLにアクセスされたときに実行される関数about()を定義しています。

結果

Homeの結果です。ここでは、「http://127.0.0.1:5000」にアクセスした時の表示です。

次に「http://127.0.0.1:5000/about」にアクセスした結果です。

URLパラメータを使ったルーティング

Flaskでは、URLの一部を変数として扱い、その値をビュー関数に渡すこともできます。これを「URLパラメータ」と言います。

動的なルーティング

from flask import Flask

app = Flask(__name__)

# URLパラメータを受け取る
@app.route('/hello/<name>')
def hello(name):
    return f'Hello, {name}!'

if __name__ == '__main__':
    app.run(debug=True)

コードの説明

  • @app.route('/hello/<name>')<name>はURLの一部として受け取る変数です。例えば、/hello/testにアクセスすると、nameには'test'が渡され、hello()関数内で使用されます。
  • hello(name)関数は、Hello, test!などのメッセージをブラウザに返します。

結果

  • http://localhost:5000/hello/testHello,test!

HTTPメソッドを使ったルーティング

Flaskでは、特定のHTTPメソッド(GET、POST、PUT、DELETEなど)に応じて異なる処理を実行することもできます。デフォルトでは、FlaskはGETメソッドに対応するルートを定義しますが、POSTメソッドにも対応できます。

POSTメソッドを使ったフォーム送信

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def greet():
    if request.method == 'POST':
        name = request.form.get('name')
        return f'Hello, {name}!'
    return render_template('greet_form.html')

if __name__ == '__main__':
    app.run(debug=True)

コードの説明

このコードでは、/ ルートGET メソッドも POST メソッドも処理できるようにしています。POST メソッドでフォームが送信されると、名前が表示されます。GET メソッドの場合は、HTMLフォームを表示します。

この場合、HTMLフォームから送信された名前を受け取り、挨拶を返す処理が行われます。

HTMLの作成

次に、templates/greet_form.html というHTMLファイルを作成します。Flaskはデフォルトで templates フォルダ内のHTMLファイルを探します。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Greet Form</title>
</head>
<body>
    <h1>Enter Your Name</h1>
    <form method="POST">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required>
        <button type="submit">Greet Me!</button>
    </form>
</body>
</html>

結果

名前を入力して送信ボタンを押すと、POST メソッドが送信され、Flaskがその名前を受け取って、Hello, {name}!と表示されます。

「test」を入力した結果です。

まとめ

Flaskのルーティングとビュー関数は、Webアプリケーションの基本となる部分です。以下のポイントを押さえておくと、Flaskを使ったWeb開発がスムーズに進みます

  1. ルーティング: @app.route()デコレーターを使って、特定のURLにアクセスされたときに実行するビュー関数を定義します。
  2. ビュー関数: ルートURLにアクセスされたときに実行されるPythonの関数です。HTMLやテキストをブラウザに返す役割を持っています。
  3. 動的ルーティング: URLの一部を変数として使用し、動的にデータを表示することができます。
  4. HTTPメソッド: フォームデータを処理したり、特定のアクションを実行する際にPOSTGETなどのHTTPメソッドを指定して処理を分けることができます。

これらの基本を理解することで、FlaskでのWebアプリケーション開発が簡単に始められます。次のステップでは、フォームの作成やデータベースとの連携など、さらに進んだ機能を学びましょう!

タイトルとURLをコピーしました