我正在尝试在Pyramid中实现自己的会话工厂。我见过的所有会话工厂示例(beaker,redis等)都将它作为dict
的子类实现:
request.session['key'] = 'value'
我想实现一个非常简单的会话界面:
request.session.set('key', 'value')
request.session.get
request.session.delete
这样好吗?这是否会影响Pyramid的任何内部方法无法正常工作?金字塔子系统是否依赖于类似dict的会话?
编辑:
默认SessionAuthenticationPolicy
确实取决于会话词组
def remember(self, ...):
...
request.session[self.userid_key] = principal
答案 0 :(得分:2)
到目前为止,您所看到的内容符合Pyramid的ISession
界面。如果您希望任意包能够触及您的会话(例如SessionAuthenticationPolicy
),则必须提供符合这些包期望的接口的会话实现。
这就是Pyramid期望有效运作的东西。话虽这么说,非常少的包实际上需要一个有效的会话,所以你通常做任何你想做的事情(直到你不能:)。如果您想为应用程序提供其他方法,在原始界面之上,那就完全没问了。