金字塔:会话必须是一个词典

时间:2013-03-14 13:55:16

标签: python session pyramid

我正在尝试在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

1 个答案:

答案 0 :(得分:2)

到目前为止,您所看到的内容符合Pyramid的ISession界面。如果您希望任意包能够触及您的会话(例如SessionAuthenticationPolicy),则必须提供符合这些包期望的接口的会话实现。

这就是Pyramid期望有效运作的东西。话虽这么说,非常少的包实际上需要一个有效的会话,所以你通常做任何你想做的事情(直到你不能:)。如果您想为应用程序提供其他方法,在原始界面之上,那就完全没问了。

http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/api/interfaces.html?highlight=isession#pyramid.interfaces.ISession