【问题标题】:base handler class ,webapp2_extra.auth基本处理程序类,webapp2_extra.auth
【发布时间】: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


    【解决方案1】:

    Dispatch 调度(您的)webapp2 请求处理程序。

    除了实现自己的调度算法之外,您还可以在处理程序开始或结束之前和之后做一些事情,例如:

    • 在调用处理程序之前加载会话数据并
    • 在处理程序完成后将数据存储在会话中。

    如果您不使用调度覆盖,您必须自己在所有处理程序中加载和存储会话数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多