首先,我对GAE来说是全新的,所以我可能会以错误的方式做到这一点 - 但我之前使用过的是PHP,会话是我保持持久数据的方式.我正在使用Python 2.7,因为这是我用于所有其他Python开发的东西 - 尽管我开始怀疑降级到2.5是否可能是一个有效的解决方案,如果不是理想的解决方案.
场景是我正在构建一个概念验证站点,我需要一个"虚拟"登录按钮,它只需设置一个名为'user'的会话变量,其值为'admin'.然后我想检查导航模板以查看变量是否已设置,如果是,我将添加一些额外的菜单命令.非常简单. (注意:我知道这不安全,不合理或者应该做的任何事情 - 问题是会话不起作用,而不是我正在做的事情 - 我在代码中使用其他一些东西session - 部署时没有一个工作正常
似乎有一些不同的会话库用于GAE与Python,我尝试了谷歌搜索中最广泛推荐的那个 - gaeutilities,但是这会导致错误并且不起作用(我最终偶然发现这篇文章解释它只是与Python 2.7不兼容).再多一点搜索引导我从appenginelearn.com浏览这个库,我把它放进去并且它完美地工作......直到我部署它 - 然后它什么也没做.我会喜欢一些指示或建议,为什么这可能会失败.这是我正在使用的相关代码:
我将appenginelearn.com的util库目录放在应用程序目录的根目录中,然后导入Session:
from util.sessions import Session
Run Code Online (Sandbox Code Playgroud)
然后我添加了Login和Logout类:
class LogIn(webapp2.RequestHandler):
def get(self):
self.session = Session()
self.session['user'] = 'admin'
# Return the user to the page they logged in from
referer = self.request.environ['HTTP_REFERER'] \
if 'HTTP_REFERER' in self.request.environ \
else '/'
self.redirect(referer)
class LogOut(webapp2.RequestHandler):
def get(self):
self.session = Session()
self.session.delete_item('user')
self.redirect('/')
Run Code Online (Sandbox Code Playgroud)
主类中的以下(可怕)代码(这将在演示中的所有页面完成)
class MainPage(webapp2.RequestHandler): …Run Code Online (Sandbox Code Playgroud)