リクエストとレスポンス

Pylons 特殊グローバル変数

Pylons は、現在のリクエストに対応する状態データを含むいくつかの特殊な グローバル変数を持っています。これは、それと最も近い Pyramid の等価物です:

pylons.request

リクエスト URL やクエリパラメーターなど。それは Pyramid ではビュー 関数に対する request 引数、およびビューメソッドの中では self.request になります (クラスコンストラクタが通常のパターンに 従う場合)。テンプレートでは、 request あるいは req です (Pyramid 1.3 から)。 pshell やユニットテストなどで他の方法では取得 することができない場合、 request = pyramid.threadlocal.get_current_request() を使用してください。

pylons.response

HTTP レスポンスステータスおよびドキュメント。 Pyramid にはグローバル なレスポンスオブジェクトはありません。代わりに、ビューは pyramid.response.Response インスタンスを生成し、それを返す必要が あります。レンダラーを使用していれば、自動的にレスポンスオブジェクト が生成されます。

利便性のために request.response オブジェクトが用意されています。 あなたはこのオブジェクトの属性に値を設定して返すことができます。 ただし、それを返した場合にのみ効果があります。レンダラーを使用して いれば、それは request.response に加えた変更を尊重します。

pylons.session

セッション変数。セッションの章を参照してください。

pylons.tmpl_context

リクエストローカルデータのためのスクラッチオブジェクト。変数を テンプレートへ渡すために通常使用されます。 Pyramid では、変数の辞書を 返してレンダラーがそれをテンプレートに適用するようにします。または ビューコードの中で自分でテンプレートをレンダリングすることもできます。

ビューがメソッドである場合、さらに、インスタンス変数をセットするこ とができます。ビューインスタンスはテンプレート中で view として 見えます。これの主要なユースケースが 2 つあります。 1. サイトテンプレート 用に変数をセットするため。これ以外の方法では すべての 返却される辞書 の中でセットする必要があります。 2. ビューが HTML レンダラーと非 HTML レンダラー (例えば JSON) の両方で登録されている場合に HTML レンダラー に特有の変数のため。

Pyramid は “tmpl_context” の移植版である request.tmpl_context を持っています。それはテンプレートにおいて c として見えます。 しかし、それは Pyramid-Pylons ユーザの間で人気を得ることがなく、 もはや文書化されません。

pylons.app_globals

すべてのリクエストを横断して共有されるグローバル変数。最も近い等価物は request.registry.settings です。これは通常アプリケーション設定を 含んでいますが、他のものを格納することもできます (レジストリは Pyramid によって内部で使用されるシングルトンです)。

pylons.cache

キャッシュオブジェクト。高価な計算の結果を多数のリクエストを横断して ある期間の間自動的に保存するために使用されます。 Pyramid は内蔵の 等価物を持っていませんが、 “pyramid_beaker” を使用してキャッシュを セットアップすることができます。恐らくキャッシュを settings に 入れたいと思うでしょう?

pylons.url

URL ジェネレーター。 Pyramid のリクエストオブジェクトは URL を 生成するためのメソッドを持っています。 boilerplate コードを減らす便利な オブジェクトについては、 URL ジェネレーターの章も参照してください。

リクエストとレスポンスの API

Pylons は WebOb のリクエストオブジェクトおよびレスポンスオブジェクトを 使用します。 Pyramid は、これらのサブクラスを使用します。したがって、 よく知られている属性およびメソッドはすべてそこにあります: params, GET, POST, headers, method, charset, date, environ, body, and body_file 。一般に最も使用された属性は params です。それはクエリパラメーターおよび POST 変数です。

Pyramid はいくつかの属性および方法を加えます。 context, matchdict, matched_route, registry, registry.settings, session, tmpl_context はリクエストの状態データおよびグローバルプリケーション データにアクセスします。 route_path, route_url, resource_url, static_url は URL を生成します。

これらの属性とメソッドに対する既存のドキュメンテーションを繰り返す代わりに、 オリジナルのドキュメントを紹介するに留めましょう:

レスポンスの例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
response = request.response

# -OR-
from pyramid.response import Response
response = Response

# In either case.
response.status = "200 OK"
response.status_int = 200
response.content_type = "text/plain"
response.charset = "utf-8"
response_headerlist = [
    ("Set-Cookie", "abc=123"), ("X-My-Header", "foo")]
response_cache_for = 3600    # Seconds
return response

Table Of Contents

Previous topic

route とビューのサンプル

Next topic

テンプレート