0

我正在将我的 appengine 应用程序从 Pylons 迁移到 webapp2。在 pylons 中,请求和响应对象是全局的。但是,在 webapp2 中,它们作为对象属性(self.request、self.response)被访问。

但我假设在 extras 包中使用 Local 模块是为了以线程安全的方式访问全局变量。

我无法弄清楚如何在 webapp2 应用程序中将请求对象作为全局变量而不是 self.request 访问,因为它会保留我现有的控制器代码。

我找不到很多关于本地模块以及如何使用它的文档。Flask 和 Bottle 等其他框架也可以使用 contextLocal 对请求进行全局访问。因此,在 webapp2 中以相同的方式访问请求对象将是一个更可移植的代码。

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 回答