2016-09-13 11 views
0

Blueprint.errorhandlerBlueprint.app_errorhandlerの違いを理解するのに問題があります。 APIドキュメント(強調鉱山)によれば:「青写真のローカル」とはどういう意味ですか?

errorhandler(code_or_exception)

にのみ、この青写真 のためにアクティブになったエラーハンドラを登録します。ルーティングは 青写真にローカルでは起こらないので、404のエラーハンドラは通常、ビュー機能内で発生しない限り 青写真によって処理されません。もう1つの特別な の場合は、アプリケーションの から常に検索される500の内部サーバーエラーです。

AFAIKでは、Flaskの青写真オブジェクトは「複数回でもアプリケーションに登録できる操作の集合」です。

私の質問は以下のとおりです。

  1. どのようにエラーが一連の操作に対してローカルであることができますか?
  2. ビュー機能によってエラーが発生する可能性はありますか?

答えて

1

'ローカル'は、ルートとの関係で青写真が登録することを意味します。青写真のルートには、青写真を登録した名前の接頭辞が常に付いているので、自然にグループ分けされ、URLパスのトポロジーの意味で地域性があります。 'nonlocal'は、青写真に関連付けられていないビューです。彼らは別の接頭辞または全く接頭辞を持たないでしょう。

ビュー機能はexceptionsを呼び出すことができ、特定の例外(HTTPExceptionから派生したもの)にはHTTPエラーコードが関連付けられています。 @blueprint.errorhandler()は、そのような例外または関連するHTTPエラーコードのハンドラを登録します。ドキュメントが述べている何

はエラーがいずれか(例えば404 NotFoundエラーなど)はまだビューを持っていないと、そのためのあなたは、特定の青写真へのルートそのエラーをすることはできませんルーティング中にを上げたということです。

ルーティングが成功して要求を処理するビューが見つかると、request.blueprintは、そのビューに対応する関連する登録された青写真に設定されます。エラーが発生し、エラーハンドラが見つかる必要がある場合、request.blueprintの値はFlaskに 'ローカル'エラーハンドラを見つけさせます。

+0

'@ blueprint.errorhandler()'は例外がどこで発生したかを調べます(例外が "非ローカル"であると判明した場合、つまりこの特定の青写真の中で定義されていない場合は何もしません)。 '@blueprint.app_errorhandler ) 'そうですか? –

+0

申し訳ありませんが、私の答えは十分正確ではありませんでした。私はそれを更新しました。したがって、*ビューが見つかると、Flaskはエラーを右のブループリント固有のエラーハンドラに送ることができます。 'app_errorhandler()'は基本的に 'Flask.errorhandler'を呼び出しますので、代わりに特定の青写真にルーティングできないすべての(マッチング)エラーに使用されます。 –

関連する問題