我有一个使用braintree付款API的结帐页面。它的工作原理是直接将信用卡表格提交给braintree的服务器,然后将它们重定向到我的“确认”页面。如果你很好奇,这是详细here。
购物车存储在会话中。如果我在提供结账表单之前跟踪会话数据......
@cherrypy.expose
def placeorder(self, ...):
...
cherrypy.log.error(str(cherrypy.session[CART_SESSION_KEY])) #'_ORDERS'
return str(template)
......它有效。但是,如果我尝试在确认页面的处理函数期间跟踪它...
@cherrypy.expose
def confirm(self, **kwargs):
cherrypy.log.error(str(cherrypy.session[CART_SESSION_KEY])) #'_ORDERS'
querystring = cherrypy.request.query_string
result = braintree.TransparentRedirect.confirm(querystring)
if not result.is_success:
...
我收到KeyError异常:
File "valleypd.py", line 551, in confirm
cherrypy.log.error(str(cherrypy.session[CART_SESSION_KEY]))
File "/usr/local/lib/python2.6/dist-packages/CherryPy-3.1.2py2.6.egg/cherrypy/__init__.py", line 323, in __getitem__
return child[key]
File "/usr/local/lib/python2.6/dist-packages/CherryPy-3.1.2-py2.6.egg/cherrypy/lib/sessions.py", line 167, in __getitem__
return self._data[key]
KeyError: '_ORDERS'
即使它是重定向,也不会认识到浏览器?在这里,我承认我对会话工作方式的了解非常有限。