вишневый сеанс исчезает при прозрачном перенаправлении - PullRequest
1 голос
/ 05 октября 2010

У меня есть страница оформления заказа, в которой используется 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хотя это редирект?Здесь я признаю, что мои знания о том, как работают сессии, крайне ограничены.

...