Доступ к запросу как глобальной переменной в webapp2 - PullRequest
0 голосов
/ 25 декабря 2011

Я мигрирую через приложение appengine из Pylons в webapp2. В пилонах объекты запроса и ответа являются глобальными. Однако в webapp2 они доступны как атрибуты объекта (self.request, self.response).

Но я предполагаю, что использование локального модуля в пакете extras предназначено для доступ к глобальным переменным потокобезопасным способом.

Я не могу понять, как получить доступ к объекту запроса как к глобальному. переменная вместо self.request в приложении webapp2, поскольку она сохранит мой существующий код контроллера.

Мне не удалось найти много документации по локальному модулю и тому, как его использовать. Другие фреймворки, такие как Flask и Bottle, также имеют глобальный доступ к запросу с использованием contextLocal. Таким образом, это был бы более переносимый код для доступа к объекту запроса таким же образом и в webapp2.

Ответы [ 2 ]

2 голосов
/ 09 апреля 2012

Реестр доступен как на уровне приложения, так и на уровне запроса.Предыдущий ответ касался уровня приложения.

Ниже приведен код, позволяющий использовать глобальные переменные на уровне запроса.

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
1 голос
/ 29 декабря 2011

Мне также не удалось найти объекты глобального запроса. Вместо этого я использовал реестр, чтобы передавать вещи между запросами. Проверьте это:

http://webapp -improved.appspot.com / руководство / app.html # реестра

...