2013-08-29 34 views
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': '&&&', ...} 

为什么值不保存在session? _dirty标志是什么意思?

回答

1

session.__dict__不是处理会话的api。下面的会话实现为dict对象,该对象不使用__dict__来存储其内容。您只需打印出与该类无关的属性。打印出session.items()之类的东西,或者session,因为其号码为dict