0

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

しかし、extras パッケージで Local モジュールを使用することは、スレッドセーフな方法でグローバル変数にアクセスするためのものだと思います。

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

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

4

2 に答える 2

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
于 2012-04-08T23:34:06.437 に答える
1

グローバルなリクエスト オブジェクトも見つかりませんでした。代わりに、レジストリを使用してリクエスト間で物を渡しました。これをチェックしてください:

http://webapp-improved.appspot.com/guide/app.html#registry

于 2011-12-29T05:51:36.010 に答える