0

假设我使用默认金字塔UnencryptedCookieSessionFactory

...
my_session_factory = UnencryptedCookieSessionFactoryConfig('itsaseekreet')
config = Configurator(settings=settings)
config.set_session_factory(my_session_factory)
...

并定义两个相互链接的视图:

@view_config(route_name='t1')
def t1(request):
    session = request.session
    session['fred'] = '***'
    session['abc'] = '&&&'
    return Response(str(session.__dict__) + '<a href="t2">t2</a>')

@view_config(route_name='t2')
def t2(request):
    session = request.session
    return Response(str(session.__dict__) + '<a href="t1">t1</a>')

如果我在浏览器中访问 t1,我会得到以下输出:

{'accessed': 1377760577, '_dirty': True, 'request': , 'new': False, 'created': 1377760540.30155}t2

如果我点击 t2 的链接:

{'accessed': 1377760577, 'request': , 'new': False, 'created': 1377760540.30155}t1

但我希望 t1 和 t2 会有所不同:

{ ..., 'fred': '***', 'abc': '&&&', ...}

为什么值没有存储在会话中?_dirty 标志是什么意思?

4

1 回答 1

1

session.__dict__不是处理会话的api。下面的会话被实现为一个dict__dict__用于存储其内容的对象。您只是打印出类上不相关的属性。打印出类似的东西,session.items()或者只是session因为它是一个dict.

于 2013-08-29T15:04:18.260 回答