我一直在使用geasessions一段时间,一直很努力。它简单而快速。
但今天我开始了一个新项目(GAE v1.3.7)并且无法使其工作,get_current_session()
只返回None
我已将代码拆分为仅使用gaesessions的新项目:
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template
from gaesessions import get_current_session
import logging
class MainHandler(webapp.RequestHandler):
def get(self):
session = get_current_session()
logging.info(session)
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, { }))
在日志中它只是说None
。
奇怪的是,其他解决方案仍然有效。 (我猜这是因为Session的db.Model已经存在)。测试了我在那里使用的版本并下载了最新版本(1.04)
我已经查看了source code的gaesessions,有意义的是它返回None:
_current_session = None
def get_current_session():
"""Returns the session associated with the current request."""
return _current_session
我找不到调用Session类的任何地方,但是那时它可能是我的laking python技能。
有没有人使用过去,知道发生了什么?
答案 0 :(得分:2)
我认为你错过了installation process中的某些内容。
无论如何,如果你向下滚动源代码,你会注意到这部分代码实际上对_current_session
变量进行了定价。
def __call__(self, environ, start_response):
# initialize a session for the current user
global _current_session
_current_session = Session(lifetime=self.lifetime, no_datastore=self.no_datastore, cookie_only_threshold=self.cookie_only_thresh, cookie_key=self.cookie_key)