(機械翻訳) ピラミッド構成のイントロスペクション

バージョン 1.3 で追加.

Pyramidが起動すると、a:term: 設定ディレクティブ 'を呼び出すと、term: introspectable`オブジェクトが:term: `introspector`で登録されます。 Introspectorは、実行中のアプリケーションの構成に関する情報を取得するためにアプリケーションコードによって照会できます。この機能は、デバッグツールバー、構成の一部を示すコマンドラインスクリプト、および起動時の構成設定のランタイムレポートに役立ちます。

イントロスペクサーの使用

ビュー呼び出し可能な内部からピラミッドのイントロスペクサーを使用する例を次に示します。

1
2
3
4
5
6
7
8
9
from pyramid.view import view_config
from pyramid.response import Response

@view_config(route_name='bar')
def show_current_route_pattern(request):
    introspector = request.registry.introspector
    route_name = request.matched_route.name
    route_intr = introspector.get('routes', route_name)
    return Response(str(route_intr['pattern']))

このビューは、ビューの呼び出し時にマッチしたルートの `` add_route``メソッドに与えられた"pattern "引数を含むレスポンスを返します。 :meth: pyramid.interfaces.IIntrospector.get`メソッドを使用して、:routes: discriminator`をカテゴリ `routes``で一致させたルート名で返すようにします。次に、返されたイントロスペクタブルを使用して"パターン"値を取得します。

introspectorのクエリメソッドによって返されるイントロスペクタには、class: pyramid.interfaces.IIntrospectable`で記述されたメソッドと属性があります。特に、:meth: `〜pyramid.interfaces.IIntrospector.get、:meth:〜pyramid.interfaces.IIntrospector.get_category、:meth: 〜pyramid.interfaces.IIntrospector.categories、:meth:〜 〜pyramid.interfaces.IIntrospector.categorized、イントロスペクタの:meth: `〜pyramid.interfaces.IIntrospector.related`メソッドは、イントロスペクタブルを問い合わせるために使用できます。

イントロスペクティブオブジェクト

イントロスペクターオブジェクトは、イントロスペクサーの照会メソッドから戻されます。各イントロスペクターブルオブジェクトは、class: `pyramid.interfaces.IIntrospectable`に記述されている属性とメソッドを実装しています。

すべてのイントロスペクタブルで共有される重要な属性は次のとおりです。

``タイトル ``

イントロスペクターブルを記述する人間が判読可能なテキストタイトル

`` category_name``

このイントロスペクタブルが属するイントロスペクションカテゴリを示すテキストカテゴリ名。カテゴリに複数のイントロスペクタブルが登録されていると予想される場合は、複数の場合があります。

「弁別者」

そのカテゴリ内のこのイントロスペクタブルの一意の値を表すハッシュ可能なオブジェクトです。

`` discriminator_hash``

ディスクリミネータの整数ハッシュ(HTMLリンクで便利)。

`` type_name``

このイントロスペクブルのカテゴリ内のサブタイプのテキスト名。このイントロスペクブルのカテゴリーに1つのタイプ名しかない場合、この値はカテゴリー名の単数バージョンですが、任意の値にすることができます。

`` action_info``

このイントロスペクティブを登録させるディレクティブ呼び出しサイトを記述するオブジェクト。これは、class: `pyramid.interfaces.IActionInfo`に記述されている属性を含んでいます。

上で説明した属性を持つことに加えて、イントロスペクタブルは辞書のようなオブジェクトです。 introspectableは、 `` __getitem__``、 `` get``、 `` keys``、 `` values``、または `` items``メソッドを通してデータ値を問い合わせることができます。例えば:

1
2
route_intr = introspector.get('routes', 'edit_user')
pattern = route_intr['pattern']

ピラミッドのイントロスペクションカテゴリ

組み込みピラミッド設定ディレクティブによって提供される具体的なイントロスペクションカテゴリのリストが続きます。アドオンパッケージは、ここに記載されていないカテゴリで他のイントロスペクタブルを提供することがあります。

``加入者 ``

`` subscribers``カテゴリの各イントロスペクタブルは、:meth: `pyramid.config.Configurator.add_subscriber`(またはそれに相当するデコレータ)の呼び出しを表します。それぞれには次のデータがあります。

``加入者 ``

加入者呼び出し可能オブジェクト( `` add_subscriber``に渡された `` subscriber``引数の解像度)。

``インターフェース ``

サブスクライブされている一連のインタフェース(またはクラス)( `` add_subscriber``に渡される `` ifaces``引数の解像度)です。

`` derived_subscriber``

元のサブスクライバが1つだけを受け入れる場合、複数の引数で呼び出すことができるように、システムによって内部的に使用されるサブスクライバのラッパー。

``述語 ``

述語引数を `` add_subscriber``に渡した結果生成された述語オブジェクト。

`` derived_predicates``

述語引数を `` add_subscriber``に渡した結果として作成された述語オブジェクトの周りのラッパー(述語が1つの値しか取らずに複数渡されなければならないときに使われる)。

``レスポンスアダプタ ``

``レスポンスアダプタ ''カテゴリの各イントロスペクブルは、:meth: `pyramid.config.Configurator.add_response_adapter`(またはデコレータ相当)の呼び出しを表します。それぞれには次のデータがあります。

``アダプター ``

アダプタオブジェクト( `` add_response_adapter``への解決された `` adapter``引数)。

``タイプ ``

解決された `` type_or_iface``引数が `` add_response_adapter``に渡されました。

``根の工場 ``

`` root factories``カテゴリの各イントロスペクブルは:meth: pyramid.config.Configurator.set_root_factory`(またはConfiguratorのコンストラクタと同等)*または* factory``引数に渡されたコールを表します:meth: `` pyramid.config.Configurator.add_route`。それぞれには次のデータがあります。

``工場 ``

ファクトリオブジェクト( `` set_root_factory``への `` factory``引数を解決しました)。

`` route_name``

この工場を使用するルートの名前。これが* default *ルートファクトリ( `` set_root_factory``の呼び出し中に登録されている場合)の場合、この値は `` None``になります。

``セッションファクトリー ``

`` session factory``カテゴリには1つのイントロスペクタブルだけが存在します。それは:meth: `pyramid.config.Configurator.set_session_factory`(またはそれに相当するConfiguratorコンストラクタ)の呼び出しを表します。それは次のデータを持っています。

``工場 ``

ファクトリオブジェクト( `` set_session_factory``の `` factory``引数を解決しました)。

``要求工場 ``

`` request factory``カテゴリには1つのイントロスペクタブルだけが存在します。それは:meth: `pyramid.config.Configurator.set_request_factory`(またはそれに相当するConfiguratorコンストラクタ)の呼び出しを表します。それは次のデータを持っています。

``工場 ``

ファクトリオブジェクト( `` set_request_factory``への `` factory``引数を解決しました)。

「ロケール交渉者」

「ロケール交渉者」カテゴリには、1つのイントロスペクタブルだけが存在する。それは:meth: `pyramid.config.Configurator.set_locale_negotiator`(あるいはそれに相当するConfiguratorコンストラクタ)の呼び出しを表します。それは次のデータを持っています。

"交渉者"

ファクトリオブジェクト( `` set_locale_negotiator``の `` negotiator``引数を解決しました)。

レンダラー工場 `

`` renderer factories``カテゴリの各イントロスペクトは、:meth: `pyramid.config.Configurator.add_renderer`(またはそれに相当するコンストラクタのコンストラクタ)への呼び出しを表します。それぞれには次のデータがあります。

「名前」

レンダラーの名前( `` add_renderer``への `` name``引数の値)。

``工場 ``

ファクトリオブジェクト( `` add_renderer``への `` factory``引数を解決しました)。

``路線 ``

`` routes``カテゴリの各イントロスペクトは、:meth: `pyramid.config.Configurator.add_route`の呼び出しを表します。それぞれには次のデータがあります。

「名前」

`` name``引数は `` add_route``に渡されます。

``パターン ``

`` add_route``に渡される `` pattern``引数です。

``工場 ``

`` add_route``に渡された(解決された) `` factory``引数です。

`` xhr``

`` xhr``引数は `` add_route``に渡されます。

`` request_method``

`` add_route``に渡された `` request_method``引数です。

`` request_methods``

`` request_method``引数が暗黙指定されたリクエストメソッド名のシーケンスは、 `` add_route``または `` request_method``引数が与えられていない場合は `` None``に渡されます。

`` path_info``

`` add_route``に渡された `` path_info``引数です。

`` request_param``

`` add_route``に渡された `` request_param``引数です。

``ヘッダー ``

`` header``引数は `` add_route``に渡されます。

「受け入れる」

`` accept``引数は `` add_route``に渡されます。

「トラバース」

`` traverse``引数が `` add_route``に渡されました。

`` custom_predicates``

`` add_route``に渡される `` custom_predicates``引数です。

`` pregenerator``

`` pregenerator``引数が `` add_route``に渡されました。

「静的」

`` static``引数は `` add_route``に渡されます。

`` use_global_views``

`` add_route``に渡される `` use_global_views``引数です。

``オブジェクト ``

:class: `pyramid.interfaces.IRoute`オブジェクト。このルートのマッチングと生成を実行するために使用されます。

``認証ポリシー ``

「認証ポリシー」カテゴリには、1つだけがイントロスペクト可能です。これは、:meth: `pyramid.config.Configurator.set_authentication_policy`メソッド(またはそれに相当するConfiguratorコンストラクタ)の呼び出しを表します。それは次のデータを持っています。

``政策 ``

ポリシーオブジェクト( `` set_authentication_policy``への `` policy``引数を解決しました)。

``認可政策 ``

「認可ポリシー」カテゴリには、1つだけがイントロスペクト可能である。これは:meth: `pyramid.config.Configurator.set_authorization_policy`メソッド(またはそれに相当するConfiguratorコンストラクタ)の呼び出しを表します。それは次のデータを持っています。

``政策 ``

ポリシーオブジェクト( `` set_authorization_policy``への `` policy``引数を解決しました)。

``デフォルト許可 ``

`` default permission``カテゴリには、1つだけがイントロスペクト可能です。これは、:meth: `pyramid.config.Configurator.set_default_permission`メソッド(またはそれに相当するConfiguratorコンストラクタ)の呼び出しを表します。それは次のデータを持っています。

「価値」

許可名は `` set_default_permission``に渡されます。

``デフォルトcsrfオプション ``

`` default csrf options``カテゴリには、1つだけがイントロスペクト可能です。これは:meth: `pyramid.config.Configurator.set_default_csrf_options`メソッドの呼び出しを表します。それは次のデータを持っています。

`` require_csrf``

:meth: pyramid.config.Configurator.add_view`の呼び出しで未指定のまま残っている場合は、 `require_csrf``のデフォルト値です。

`` token``

有効なCSRFトークンを見つけるために `` request.POST``で検索されたトークンの名前。

``ヘッダー ``

有効なCSRFトークンを検索するために検索されたリクエストヘッダーの名前。

`` safe_methods``

安全であり、CSRFのチェックが免除されていると考えられるHTTPメソッドのリスト。

`` views``

`` views``カテゴリの各イントロスペクタブルは:meth: `pyramid.config.Configurator.add_view`の呼び出しを表します。それぞれには次のデータがあります。

「名前」

`` name``引数は `` add_view``に渡されます。

「文脈」

`` add_view``に渡された(解決された) `` context``引数です。

「封じ込め」

`` add_view``に(解決された) `containment``引数が渡されました。

`` request_param``

`` add_view``に渡された `` request_param``引数です。

`` request_methods``

`` request_method``引数が暗黙指定された要求メソッド名のシーケンスは、 `` add_view``または `` request_method``引数が与えられていない場合は `` None``に渡されます。

`` route_name``

`` add_view``に渡された `` route_name``引数。

`` attr``

`` attr``引数は `` add_view``に渡されます。

`` xhr``

`` xhr``引数は `` add_view``に渡されます。

「受け入れる」

`` accept``引数は `` add_view``に渡されます。

``ヘッダー ``

`` header``引数は `` add_view``に渡されます。

`` path_info``

`` add_view``に渡された `` path_info``引数です。

`` match_param``

`` add_view``に渡された `` match_param``引数です。

`` csrf_token``

`` add_view``に渡された `` csrf_token``引数です。

`` callable``

`` add_view``に渡された(解決された) `` view``引数。 "生の"ビュー呼び出し可能を表します。

`` derived_callable``

`` add_view``に渡された `` view``引数から派生した呼び出し可能なビューです。 Pyramid自身が呼び出す呼び出し可能なビュー(セキュリティおよびその他のラッパーでラップされたビュー)を表します。

``マッパ ``

(解決された) `` mapper``引数が `` add_view``に渡されました。

``デコレータ ``

`` add_view``に(解決された) `` decorator``引数が渡されました。

``許可 ``

`` permissions``カテゴリの各イントロスペクタブルは:meth: pyramid.config.Configurator.add_view`の呼び出しを表します。これは明示的な permission``引数*または*:meth: pyramid.configの呼び出しを持ちます。 Configurator.set_default_permission`を実行します。それぞれには次のデータがあります。

「価値」

許可名は `` add_view``または `` set_default_permission``に渡されます。

``テンプレート ``

`` templates``カテゴリの各イントロスペクブルは、テンプレートを指す `` renderer``引数を持つ:meth: `pyramid.config.Configurator.add_view`の呼び出しを表します。それぞれには次のデータがあります。

「名前」

レンダラーの名前(文字列)。

``タイプ ``

レンダラーの型(文字列)。

レンダラー

このテンプレートのレンダラを表す:class: `pyramid.interfaces.IRendererInfo`オブジェクトです。

``視界マッパー ``

`` view mappers``カテゴリの各イントロスペクブルは:meth: pyramid.config.Configurator.add_view`の呼び出しを表します。これは明示的な mapper``引数*または*:meth: pyramid.config .Configurator.set_view_mapper`。それぞれには次のデータがあります。

``マッパ ``

(解決された) `` mapper``引数が `` add_view``または `` set_view_mapper``に渡されました。

「資産オーバーライド」

`` asset overrides``カテゴリの各イントロスペクターは:meth: `pyramid.config.Configurator.override_asset`の呼び出しを表します。それぞれには次のデータがあります。

`` to_override``

`` override_asset``に渡される `` to_override``引数(アセット仕様)。

`` override_with``

`` override_asset``に渡される `` override_with``引数(アセット仕様)。

``翻訳ディレクトリ ``

`` translation directories``カテゴリの各イントロスペクタブルは、 `` specs``引数の個々の要素を:meth: `pyramid.config.Configurator.add_translation_dirs`に渡します。それぞれには次のデータがあります。

``ディレクトリ ``

変換ディレクトリの絶対パス。

「仕様」

資産仕様は `` add_translation_dirs``に渡されます。

`` tweens``

`` tweens``カテゴリの各イントロスペクトは、:meth: `pyramid.config.Configurator.add_tween`の呼び出しを表します。それぞれには次のデータがあります。

「名前」

トゥイーンファクトリのドット付きの名前( `` add_tween``への `` tween_factory``引数として渡される)文字列です。

``工場 ``

トゥイーンファクトリオブジェクト(解決済み)。

``タイプ ``

``暗黙的 ``または ``明示的 ``を文字列として返します。

``下 ``

`` under``引数は `` add_tween``(文字列)に渡されます。

``オーバー ``

引数 `` over``は `` add_tween``(文字列)に渡されます。

``静的ビュー ``

`` static views``カテゴリの各イントロスペクタブルは:meth: `pyramid.config.Configurator.add_static_view`の呼び出しを表します。それぞれには次のデータがあります。

「名前」

`` name_``引数は `` add_static_view``に与えられます。

「仕様」

`` add_static_view``に提供される `` spec``引数の正規化されたバージョンです。

`` traversers``

`` traversers``カテゴリの各イントロスペクトは、:meth: `pyramid.config.Configurator.add_traverser`への呼び出しを表します。それぞれには次のデータがあります。

`` iface``

このトラバーサが使用されるルートファクトリの戻り値を表す(解決された)インタフェースまたはクラスオブジェクト。

``アダプター ``

トラバーサルクラス(解決済み)。

``リソースURLアダプター ``

`` resource url adapters``カテゴリの各イントロスペクトは、:meth: `pyramid.config.Configurator.add_resource_url_adapter`の呼び出しを表します。それぞれには次のデータがあります。

``アダプター ``

(解決された)リソースURLアダプタクラス。

`` resource_iface``

このURLアダプタが登録されているリソースインタフェースを表す(解決された)インタフェースまたはクラスオブジェクト。

`` request_iface``

このURLアダプタが登録されている要求インターフェイスを表す(解決された)インターフェイスまたはクラスオブジェクト。

ツールバーのイントロスペクション

Pyramidのデバッグツールバー( `` pyramid_debugtoolbar``パッケージの一部)は、登録されたすべてのイントロスペクタブルとそれらの関係を表示します。これは現在、メインナビゲーションの"グローバル"タブの下にあり、次のようになります。

../_images/tb_introspector.png

イントロスペクションを無効にする

ピラミッドのイントロスペクションを無効にするには、アプリケーション設定の:term: Configurator`コンストラクタにフラグ `introspection = False``を渡します:

from pyramid.config import Configurator
config = Configurator(..., introspection=False)

``イントロスペクション ``が `` False``のとき、設定ディレクティブによって生成されたイントロスペクショナブルはすべて破棄されます。