2011-12-25 5 views
0

私のappengineアプリケーションをPylonsからwebapp2に移行しています。 パイロンでは、要求オブジェクトと応答オブジェクトはグローバルです。ただし、 webapp2では、オブジェクト属性(self.request、 self.response)としてアクセスされます。webapp2のグローバル変数としてリクエストにアクセス

しかし、私はエキストラパッケージのローカルモジュールを使用して、スレッドセーフな方法で アクセスするグローバル変数のために意味されると仮定します。

Webapp2アプリでself.requestの代わりにグローバル 変数としてリクエストオブジェクトにアクセスする方法を理解できません。これは、既存のコントローラコードを保持するためです。

ローカルモジュールとその使用方法に関する多くのドキュメントが見つかりませんでした。 FlaskやBottleのような他のフレームワークも、contextLocalを使用してリクエストするためのグローバルアクセス権を持っています。したがって、webapp2でもリクエストオブジェクトに同じようにアクセスするのは、移植性の高いコードになります。

答えて

2

レジストリはアプリレベルと要求レベルの両方で利用可能です。以前の回答はアプリレベルを扱っていました。以下は

はあなたが要求レベルでグローバルを使用することを可能にするコードです。

def instanceHtml(): 
    app = webapp2.get_app() 
    try: 
     aInstance = app.request.registry[ 'instanceHtml' ] ## retrieve previous object 
     return aInstance 
    except: 
     aInstance = zhtml.Html() ## instantiate whatever object you want 
     app.request.registry[ 'instanceHtml' ] = aInstance ## save object 
     return aInstance 
関連する問題