Google app engine Webapp2:从BaseHandler方法获取会话值

Google app engine Webapp2:从BaseHandler方法获取会话值,google-app-engine,session,python-2.7,webapp2,Google App Engine,Session,Python 2.7,Webapp2,我正在关注webapp2会话文档: BaseHandler有一个类方法检查\u cls\u login这里我需要检查会话密钥“login”是否存在。我尝试了self.session.get(“login”),但它返回错误:AttributeError:“cached\u property”对象没有属性“get” 还定义了一个名为check\u login的函数,它还返回错误:AttributeError:'MainHandler'对象没有属性'session\u store' Base.py i

我正在关注webapp2会话文档:

BaseHandler
有一个类方法
检查\u cls\u login
这里我需要检查会话密钥“login”是否存在。我尝试了
self.session.get(“login”)
,但它返回错误:
AttributeError:“cached\u property”对象没有属性“get”

还定义了一个名为
check\u login
的函数,它还返回错误:
AttributeError:'MainHandler'对象没有属性'session\u store'

Base.py

import webapp2
from webapp2_extras import sessions

class BaseHandler(webapp2.RequestHandler):
    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)

    @webapp2.cached_property
    def session(self):
       # Returns a session using the default cookie key.
       return self.session_store.get_session()

    def check_cls_login(self):
        # Check whether session key "login" is exist or not
        value = self.session.get("login")

def check_login(cls):
    # Check whether session key "login" is exist or not
    value = cls.session.get("login")
Main.py

from Base import BaseHandler

class MainHandler(BaseHandler):
   def __init__(self, request, response):
    super(BaseHandler, self).__init__(request, response)
    BaseHandler.check_cls_login() # AttributeError: 'cached_property' object has no attribute 'get'

    self.check_cls_login() # AttributeError: 'cached_property' object has no attribute 'get'

    check_login(self) # AttributeError: 'MainHandler' object has no attribute 'session_store'

而不是
BaseHandler.check\u login()
你应该有
self.check\u login()

check\u login不应该是类方法。

而不是
BaseHandler。check\u login()
你应该有
self。check\u login()

检查登录不应该是类方法。

相同错误:
AttributeError:“cached\u property”对象没有属性“get”
检查登录不是类方法。因此,我猜调用self.check_login()与调用BaseHandler.check_login()是一样的(编辑以扩展我的意思…在python代码中,使用带有“self”参数的classmethod是不常见的,它把我扔了,通常是“cls”)啊,我应该多加注意。分派发生在init之后,因此此时尚未设置会话。在处理程序中重写init是不寻常的,您很可能需要将它合并到分派中。@Greg谢谢Greg。这就解决了问题。相同的错误:
AttributeError:“cached\u property”对象没有属性“get”
check\u login不是类方法。因此,我猜调用self.check_login()与调用BaseHandler.check_login()是一样的(编辑以扩展我的意思…在python代码中,使用带有“self”参数的classmethod是不常见的,它把我扔了,通常是“cls”)啊,我应该多加注意。分派发生在init之后,因此此时尚未设置会话。在处理程序中重写init是不寻常的,您很可能需要将它合并到分派中。@Greg谢谢Greg。这就解决了问题。