2011-12-25 4 views
0

내 appengine 응용 프로그램을 통해 Pylons에서 webapp2로 마이그레이션 중입니다. pylons에서 요청 W 응답 오브젝트는 전역입니다. 그러나 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 
관련 문제