У меня есть страница оформления заказа, в которой используется API-интерфейс Braintree Payment.Он работает путем отправки формы кредитной карты непосредственно на серверы Braintree, после чего они перенаправляются на мою страницу подтверждения.Это подробно здесь , если вам интересно.
Корзина сохраняется в сессию.Если я прослеживаю данные сеанса прямо перед тем, как отправляю форму проверки ...
@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'
Не распознает браузер cherrypyхотя это редирект?Здесь я признаю, что мои знания о том, как работают сессии, крайне ограничены.