如何在金字塔会话中存储值?

时间:2013-08-29 07:25:57

标签: session pyramid

我们假设我使用默认金字塔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标志是什么意思?

1 个答案:

答案 0 :(得分:1)

session.__dict__不是处理会话的API。下面的会话实现为dict对象,不使用__dict__来存储其内容。您只是在类上打印出不相关的属性。打印出session.items()之类的内容,或仅打印session,因为它是dict