(機械翻訳) pyramid.renderers
¶
-
get_renderer
(renderer_name, package=None)[ソース]¶ レンダラー "renderer_name"のレンダラーオブジェクトを返します。
`` renderer_name``として相対的な資産指定を与えることができます。 `` package``引数が指定された場合、相対的なレンダラー名はパッケージ `` package``を相対的な資産指定 `` renderer_name``と組み合わせることによって絶対アセット仕様に変換されます。 `` package``が `` None``(デフォルト)の場合、この関数の* caller *のパッケージ名がパッケージとして使われます。
-
render
(renderer_name, value, request=None, package=None)[ソース]¶ レンダラー renderer_name`(テンプレートまたはスタティックレンダラー)を使用して、 value``にある値(または値のセット)をレンダリングします。レンダラーの ` __call__``メソッドの結果(通常は文字列またはUnicode)を返します。
レンダラーがテンプレートである場合など、 `` renderer_name``がディスク上のファイルを参照する場合は、通常:term: asset specification`(例: packagename:path / to / template .pt`)。
`` renderer_name``として相対的な資産指定を与えることができます。 `` package``引数が指定されている場合、パッケージ `` package``と相対資産指定 `` renderer_name``を組み合わせることによって、相対レンダラーパスが絶対アセット仕様に変換されます。 `` package``が `` None``(デフォルト)の場合、この関数の* caller *のパッケージ名がパッケージとして使われます。
提供された `` value``はレンダラーへの入力として供給されます。通常、テンプレートのレンダリングでは、これは辞書でなければなりません。他のレンダラーの場合、これはレンダラーが期待するどんな種類の値でも必要です。
レンダラーに提供される 'system'値には、 `` request``、 `` context``、 `` renderer_name``、 `` view``などのトップレベルシステム名の基本セットが含まれます。完全なリストについては:ref: `renderer_system_values`を参照してください。 :term: `renderer globals`が指定されている場合は、それらも値を増やすために使用されます。
レンダラーに最も正しい 'システム'値(特に ``要求 ``と ``コンテキスト ``)を提供するために `` request``パラメータを指定してください。
-
render_to_response
(renderer_name, value, request=None, package=None, response=None)[ソース]¶ レンダラー `` renderer_name``(テンプレートまたは静的レンダラー)を使用して、レンダラーの `` __call__``メソッドの結果(通常は文字列またはUnicode)を応答本体として使用して値(または値のセット)をレンダリングします。
レンダラー名がディスク上のファイルを参照する場合(レンダラーがテンプレートの場合など)は、通常は:term: `asset specification`として名前を指定するのが最善です。
`` renderer_name``として相対的な資産指定を与えることができます。 `` package``引数が指定された場合、相対的なレンダラー名はパッケージ `` package``を相対的な資産指定 `` renderer_name``と組み合わせることによって絶対アセット仕様に変換されます。 `` package``(または `` package``が `` None``)を指定しないと、この関数の* caller *のパッケージ名がパッケージとして使われます。
提供された `` value``はレンダラーへの入力として供給されます。通常、テンプレートのレンダリングでは、これは辞書でなければなりません。他のレンダラーの場合、これはレンダラーが期待するどんな種類の値でも必要です。
レンダラーに提供される 'system'値には、 `` request``、 `` context``、 `` renderer_name``、 `` view``などのトップレベルシステム名の基本セットが含まれます。完全なリストについては:ref: `renderer_system_values`を参照してください。 :term: `renderer globals`が指定されている場合は、それらも値の引数として使用されます。
レンダラーに最も正しい 'システム'値(特に ``要求 ``と ``コンテキスト ``)を提供するために `` request``パラメータを指定してください。この関数を呼び出す前に `` request.response``に加えられた変更は、結果のレスポンスオブジェクトには反映されません。新しい応答オブジェクトは、 `` response``引数として渡されない限り、各呼び出しに対して作成されます。
-
class
JSON
(serializer=<function dumps>, adapters=(), **kw)[ソース]¶ JSONでエンコードされた文字列を返すレンダラーです。
アプリケーションの起動時に:meth: 〜pyramid.config.Configurator.add_renderer APIを使用してカスタムJSONレンダラーを設定します。
from pyramid.config import Configurator config = Configurator() config.add_renderer('myjson', JSON(indent=4))
このレンダラーが上記のように登録されると、 `` @ view_config``または:meth: 〜pyramid.config.Configurator.add_view`への renderer = パラメータとして `myjson``を使うことができます:
from pyramid.view import view_config @view_config(renderer='myjson') def myview(request): return {'greeting':'Hello world'}
カスタムオブジェクトはレンダラを使って `` __json__``マジックメソッドを実装するか、またはレンダラにアダプタを登録することでシリアル化することができます。詳細はref: `json_serializing_custom_objects`を参照してください。
注釈
デフォルトのシリアライザは `` json.JSONEncoder``を使います。別のシリアライザは `` serializer``引数で指定できます。カスタムシリアライザは、オブジェクト、コールバック `` default``、およびレンダラ構築中に渡された追加の `` kw``キーワード引数を受け入れなければなりません。この機能は広く使われているわけではありませんが、在庫JSONシリアライザをたとえばsimplejsonに置き換えるために使用できます。ただし、カスタムオブジェクトをシリアル化する必要がある場合は、シリアライザを置き換える代わりに:ref: `json_serializing_custom_objects`で説明されているメソッドを使用する必要があります。
バージョン 1.4 で追加: このバージョンより前のバージョンでは、カスタムレンダラーを定義せずに、シリアライザにオプションを提供するためのパブリックAPIはありませんでした。
-
add_adapter
(type_or_iface, adapter)[ソース]¶ 型(またはインタフェース) `` type_or_iface``のオブジェクトがシリアライザを使用して自動的にエンコードできない場合、レンダラはアダプタ `` adapter``を使用してJSON直列化可能オブジェクトに変換します。アダプターは、オブジェクトと現在アクティブな要求の2つの引き数を受け入れる必要があります。
class Foo(object): x = 5 def foo_adapter(obj, request): return obj.x renderer = JSON(indent=4) renderer.add_adapter(Foo, foo_adapter)
これを行うと、JSONレンダラはビューの結果に出会ったときに `` Foo``クラスのインスタンスを直列化することができます。
-
-
class
JSONP
(param_name='callback', **kw)[ソース]¶ `JSONP <https://en.wikipedia.org/wiki/JSONP> `_ rendererハイブリッドjson / jsonpレンダラを実装するファクトリヘルパー。 JSONPは、クロスドメインAJAXリクエストを作成するのに便利です。
アプリケーション起動時に:meth: pyramid.config.Configurator.add_renderer APIを使用してJSONPレンダラを設定する:
from pyramid.config import Configurator config = Configurator() config.add_renderer('jsonp', JSONP(param_name='callback'))
クラスのコンストラクタは、任意のキーワード引数も受け入れます。 `` param_name``を除くすべてのキーワード引数は、キーワード引数として `` json.dumps``関数に渡されます。
from pyramid.config import Configurator config = Configurator() config.add_renderer('jsonp', JSONP(param_name='callback', indent=4))
バージョン 1.4 で変更: このクラスのコンストラクタに `` ** kw``を受け入れる能力。
このクラスのコンストラクタに渡される引数は、class: pyramid.renderers.JSON`( serializer``と `adapters``を含む)に渡される引数と同じことを意味します。
上記のように、このレンダラーが:meth: 〜pyramid.config.Configurator.add_renderer`を介して登録されると、レンダラー= @ view_config``または:meth: renderer = パラメーターとして jsonp``を使用することができます。 `pyramid.config.Configurator.add_view`:
from pyramid.view import view_config @view_config(renderer='jsonp') def myview(request): return {'greeting':'Hello world'}
JSONPレンダラを使用するビューが呼び出されると、次のようになります。
- 要求のHTTPクエリ文字列に、登録されたJSONPレンダラ(デフォルトでは `` callback``)の `` param_name``と一致するパラメータがある場合、レンダラはJSONP応答を返します。
- リクエストのクエリ文字列にコールバックパラメータがない場合、レンダラは '普通の' JSONレスポンスを返します。
バージョン 1.1 で追加.
参考
ref: `jsonp_renderer`も参照してください。
-
add_adapter
(type_or_iface, adapter)¶ 型(またはインタフェース) `` type_or_iface``のオブジェクトがシリアライザを使用して自動的にエンコードできない場合、レンダラはアダプタ `` adapter``を使用してJSON直列化可能オブジェクトに変換します。アダプターは、オブジェクトと現在アクティブな要求の2つの引き数を受け入れる必要があります。
class Foo(object): x = 5 def foo_adapter(obj, request): return obj.x renderer = JSON(indent=4) renderer.add_adapter(Foo, foo_adapter)
これを行うと、JSONレンダラはビューの結果に出会ったときに `` Foo``クラスのインスタンスを直列化することができます。