Flask は、Python で Web アプリケーションを構築するための最も人気のあるマイクロ フレームワークの 1 つであり、その機能の多くはデコレーターの使用によって得られます。これらのデコレータを使用すると、コードを乱雑にすることなく、すっきりと読みやすい方法でフレームワークの機能に接続できるようになります。この投稿では、最も一般的に使用される 5 つの Flask デコレーターと、2 つの佳作を取り上げます。
1 @app.route()
@app.route() デコレーターは、Flask アプリの URL ルーティングを定義するために使用されます。 URL を、そのルートのロジックを処理する Python 関数にバインドします。
例:
@app.route('/')
def home():
return 「ホームページへようこそ!」
この簡単な例では、ルート URL (/) を home() 関数にマップし、訪問者にウェルカム メッセージを返します。
2 @app.before_request()
このデコレーターは、すべてのリクエストの前に関数を実行します。認証の確認、変数の初期化、リソースの設定に最適です。
例:
@app.before_request
def check_authentication():
そうでない場合は user_is_logg_in():
return "ログインしてください"、401
この場合、関数はユーザーの続行を許可する前に、ユーザーが認証されているかどうかを確認します。
3 @app.after_request()
@app.after_request() デコレーターを使用すると、リクエストが処理された後、クライアントに送信される前にレスポンスを変更できます。これは、ヘッダーの追加や応答のログ記録などのタスクによく使用されます。
例:
@app.after_request
def add_security_headers(応答):
response.headers['X-Content-Type-Options'] = 'nosniff'
応答を返します
ここでは、セキュリティ ヘッダーがすべての応答に追加されます。
4 @app.errorhandler()
エラー処理は、Web アプリにとって非常に重要です。 @app.errorhandler() デコレータを使用すると、404 Not Found などの特定の HTTP ステータス コードのカスタム動作を定義できます。
例:
@app.errorhandler(404)
def page_not_found(e):
return "おっと! ページが見つかりません。"、404
このカスタム ハンドラーは、404 エラーが発生するたびに、わかりやすいメッセージを返します。
5 @app.teardown_request()
リクエスト後のクリーンアップに使用される @app.teardown_request() は、データベース接続などのリソースが適切に閉じられるようにします。
例:
@app.teardown_request
def close_db_connection(例外=なし):
db_session.remove()
ここでは、リクエストの処理中に例外が発生した場合でも、データベース セッションは各リクエストの後に閉じられます。
佳作
これらのデコレータは常に頻繁に使用されるわけではありませんが、特定のケースでは非常に便利です。
@app.before_first_request()
このデコレーターは、最初のリクエストが処理される前に関数を実行するために使用されます。これは、データベース接続や構成の読み込みなどのグローバル リソースの初期化に最適です。
@app.before_first_request
def 初期化_db():
db.connect()
@app.context_processor()
すべての Jinja2 テンプレートに変数をグローバルに挿入する必要がある場合は、@app.context_processor() デコレーターを使用します。これにより、現在のユーザーやアプリの構成などの値をすべてのテンプレートで使用できるようになります。
@app.context_processor
def inject_user():
return dict(current_user=get_current_user())
これにより、毎回手動で渡すことなく、すべてのテンプレートで current_user を使用できるようになります。
まとめ
Flask のデコレータを使用すると、Web リクエストのライフサイクルの管理、動作のカスタマイズ、機能の拡張が簡単になります。これらの一般的なデコレータをいつどのように使用するかを理解することは、Flask コードをクリーンで保守しやすく、強力な状態に保つのに役立ちます。お気に入りのデコレータを見逃していませんか?お知らせください!
出典
Flask API
フラスコルーティング
Flask エラー処理
Flask リクエストフック
Flask コンテキスト プロセッサ
最初のリクエスト前のフラスコ
以上が最もよく使用されるフラスコ デコレーターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。