【发布时间】:2014-03-09 09:15:55
【问题描述】:
为了确保在每个请求中保存所有会话数据,我们只在我们的基本处理程序类中使用 dispatch 方法,这是一个示例:
class BaseHandler(webapp2.RequestHandler):
@webapp2.cached_property
def auth(self):
return auth.get_auth()
@webapp2.cached_property
def user_info(self):
return self.auth.get_user_by_session()
@webapp2.cached_property
def user(self):
u = self.user_info
return self.user_model.get_by_id(u['user_id']) if u else None
@webapp2.cached_property
def user_model(self):
return self.auth.store.user_model
@webapp2.cached_property
def session(self):
return self.session_store.get_session(backend="datastore")
def render_template(self, view_filename, params={}):
user = self.user_info
params['user'] = user
self.response.out.write(template.render(path, params))
def display_message(self, message):
params = {
'message': message
}
self.render_template('message.html', params)
# this is needed for webapp2 sessions to work
def dispatch(self):
# Get a session store for this request.
self.session_store = sessions.get_store(request=self.request)
try:
# Dispatch the request.
webapp2.RequestHandler.dispatch(self)
finally:
# Save all sessions.
self.session_store.save_sessions(self.response)
根据本教程http://blog.abahgat.com/2013/01/07/user-authentication-with-webapp2-on-google-app-engine/#comment-4858 实际上我不明白框架如何使用调度方法,我只是声明它我从不使用它!对吗?
【问题讨论】:
标签: google-app-engine python-2.7 webapp2