python| まとめ | 現役エンジニア&プログラミングスクール講師「python」のまとめページです。pythonに関して抑えておきたい知識や文法やにについて記事をまとめています。まとめページの下部には「おすすめの学習書籍」「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中...

目標

  • Flaskのルーティングについて概要と基本を理解する。

Flaskのルーティング

Flaskのルーティング

Flaskのルーティングは、特定のURLに対して処理を紐付ける仕組みです。ルーティングを行う方法には、以下のものがあります。

  1. @app.route() デコレーターを利用する方法
    • シンプルなルーティング
    • パスパラメータ(シンプルな利用)
    • パスパラメータ(型指定)
    • パスパラメータ(HTTPメソッド(GET、POSTなど)指定)
    • リダイレクト
  2. Blueprintを利用する方法
    • アプリのルートを分割・モジュール化
    • app.register_blueprint()で登録

ルーティングの利用パターン

@app.route() デコレーターを利用する方法

シンプルなルーティング

@app.route() デコレーターの引数にルートを指定します。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "「/」のリクエストが来たらindex関数を実行しています。"

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

http://127.0.0.1:5000/ にアクセスすると「/」のリクエストが来たらindex関数を実行しています。が表示されます。

パスパラメータ

URLの一部を変数として扱い、リクエストごとに異なる値を取得できます。
@app.route(‘/user/<username>’) の <username> 部分はプレースホルダーであり、リクエスト時に渡された値が username 変数に格納されます。

from flask import Flask

app = Flask(__name__)

@app.route('/user/<username>')
def show_user(username):
    return f"User: {username}"

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

http://127.0.0.1:5000/user/howahowa にアクセスすると User: howahowa が表示されます。

パスパラメータ(型指定)

URLの一部を変数として扱い、リクエストごとに異なる値を取得できます。この時に変数に結び付く値の型を指定します。

下のプログラム:@app.route(‘/user/<string: username>’) の <string: username>

但し、string は パスパラメータのデフォルトの型 なので、@app.route(‘/user/<username>’) と同じ動作になります。

※「string: username」 のように記述すると、サーバーを起動したときにエラーが起こる場合があります。正しいフォーマットとして、型指定、コロン、変数名の間にはスペースを入れずに「string:username」のように記述する必要があります。

from flask import Flask

app = Flask(__name__)

@app.route('/user/<string: username>')
def show_user(username):
    return f"User: {username}"

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

http://127.0.0.1:5000/user/1234 にアクセスすると User: 1234 が表示されます。(パラメータは数値も文字列として受け取ることができるため、この場合、エラーにはなりません。)

http://127.0.0.1:5000/user/howahowa にアクセスすると User: howahowa が表示されます。

型には<string:param>、<int:param>、<float:param>、<path:param>などがあります。stringとpathの大きな違いは、pathでは「/つきの文字列利用できる」点です。

@app.route(‘/userid/<int:id>’) 整数型のように指定した場合はhowahowaなどのような文字列を送るとエラーとなります。

パスパラメータ(HTTPメソッド指定)

デフォルトでは GET のみを利用しますが、methods を指定して POST なども利用することができます。

またFlask2.0以降では「@app.route()」の代わりに「@app.get()」「@app.post()」と記述してGET や POST が利用できます。

Flask には flask.request という組み込みオブジェクトがあるため、関数名として request を使うと 予期せぬ動作 を引き起こす可能性があります。

from flask import Flask

app = Flask(__name__)

@app.route('/request', methods=['GET', 'POST'])
def handle_request():
    return "「/request」のリクエストが来たらGETまたはPOSTのmethodを受け付けます。"

if __name__ == '__main__':
    app.run(debug=True)
リダイレクト

redirect() を利用するとリダイレクトを行わせることができます。redirect() を利用するには redirect を import します。

from flask import Flask, redirect

app = Flask(__name__)

@app.route('/')
def index():
    return redirect('/next')

@app.route('/next')
def next():
    return "このページはリダイレクト先です。"

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

http://127.0.0.1:5000/ にアクセスするとhttp://127.0.0.1:5000/next にリダイレクトされ このページはリダイレクト先です。が表示されます。

Blueprintを利用する方法

大規模なアプリでは Blueprint を使ってルートを分割できます。(アプリの分割を行わせる機能)

# Blueprint をインポートして、新しいルートのグループを作成できるようにします。
from flask import Flask, Blueprint

app = Flask(__name__)

# Blueprint('user', __name__) で user_bp_obj という名前の Blueprintオブジェクト を作成します。
user_bp_obj = Blueprint('user', __name__)

# /howahowaというルートを user_bp に定義します。
@user_bp_obj.route('/howahowa')
def howahowa():
    return "User howahowa"

# app.register_blueprint() を使って、user_bp_obj を Flaskアプリに登録します。
# rl_prefix='/user' を指定し、Blueprintのルートを /user/howahowaとしています。
app.register_blueprint(user_bp_obj, url_prefix='/user')

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

user’ → Blueprintの名前(重複しないようにします。)
__name__ → モジュールの名前(通常 __name__ を渡す)

Flaskアプリが動作すると、Blueprint に登録されたルート /profile が /user/howahowa として有効になります。起動後、http://localhost:5000/user/howahowa にアクセスすると “User howahowa” と表示されます。

今回は以上になります。

Webシステム開発おすすめ書籍 「python編」pythonを利用したWebシステム開発 Pythonを使ったWebシステム開発は、近年とても人気が高く、多くの企業や開発者に利用されています。その理由は、開発のしやすさ、豊富なライブラリ・フレームワーク、読みやすいコード構造などが挙げられます。...
「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...