FlaskとDjangoはどちらもPythonベースのWebフレームワークであり、HTTPリクエストからデータを取得するための異なるアプローチを提供しています。以下にそれぞれの特徴的な違いを説明します。
1. Flaskのパラメータ処理
Flaskでは、requestオブジェクトを通じてURLのクエリ文字列やフォームデータ、JSONデータなどを取得できます。具体的な実装例:
from flask import Flask, request
app = Flask(__name__)
@app.route('/welcome/<username>')
def welcome_user(username):
return f'Welcome, {username}!'
if __name__ == '__main__':
app.run()
このコードではwelcome_userという関数を定義し、URLパスからusernameパラメータを受け取っています。ユーザーが http://127.0.0.1:5000/welcome/Alice にアクセスすると、この関数が実行されusername変数にAliceが格納されます。
2. Djangoのパラメータ処理
Djangoでは、まずプロジェクト内のurls.pyファイルでURLパターンとビュー関数の対応関係を定義します:
from django.urls import path
from . import views
urlpatterns = [
path('welcome//', views.welcome_user, name='welcome_user'),
]
次に、views.pyファイルで対応するビュー関数を作成します:
from django.http import HttpResponse
def welcome_user(request, username):
return HttpResponse(f'Welcome, {username}!')
DjangoのURL構成では角括弧(<str:username>)を使用してusernameという名前のURLパラメータを定義しています。ユーザーが/welcome/BobのようなURLにアクセスすると、welcome_user関数が呼び出され、username引数にBobが設定されます。
3. Flaskの拡張的なパラメータ処理
クエリパラメータの利用方法
from flask import Flask, request
app = Flask(__name__)
# /followers/detail:最初のフォロワー情報を返却
# /followers/detail?page=3:3ページ目のフォロワー情報を取得
@app.route('/followers/detail')
def followers_detail():
page_number = request.args.get("page", default=1, type=int)
return f"現在のページ {page_number} のフォロワー情報です!"
if __name__ == '__main__':
app.run()
このルート定義では/followers/detailにクエリ文字列pageパラメータを追加して処理しています。/followers/detailにアクセスすると"現在のページ 1 のフォロワー情報です!"を返し、/followers/detail?page=3にアクセスすると"現在のページ 3 のフォロワー情報です!"を返します。パラメータが指定されていない場合や整数でない場合はデフォルト値として1が使用されます。
4. 比較まとめ
FlaskとDjangoはどちらもURLパラメータ処理をサポートしていますが、実装方法には違いがあります。Flaskはデコレーターとビュー関数の引数を使用し、DjangoはURLconfとビュー関数の引数を利用します。実際の開発プロジェクトでは、チームの技術スタックやプロジェクト要件に応じて適切なフレームワークを選択することが重要です。