我们假设我使用默认金字塔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标志是什么意思?
答案 0 :(得分:1)
session.__dict__
不是处理会话的API。下面的会话实现为dict
对象,不使用__dict__
来存储其内容。您只是在类上打印出不相关的属性。打印出session.items()
之类的内容,或仅打印session
,因为它是dict
。