web2py:动态定义的会话变量

时间:2016-11-16 11:00:02

标签: web2py

Hello web2py社区!

我目前正在开发一个组件之间的控制机制,所有组件都在名为 model 的公共数据集群上运行,该集群由 model_id 标识。组件之间的通信是通过会话变量实现的。

但是由于用户可以选择并行操作多个模型,我需要区分用于每个模型的会话变量。

为此,我想通过 model_id 作为唯一标识符来补充不同的会话变量。

读取这样的会话变量是很容易的部分,例如

current_action = eval('session.manage_action_%s' % model_id)

但是为该会话变量写一个新值不起作用。到目前为止我的解决方案如下:

vars()['session.manage_action_%s' % model_id] = new_action

这只会产生一个局部变量 session.manage_action_5(或 model_id 的任何值)。但它不是一个真实的,可重用的和可读的会话变量。

因此我的问题是:

如何根据运行时读取的变量值生成动态定义的会话变量?

感谢您提前获得任何支持,因为为此提供解决方案会很棒...

祝你好运, 克莱门

1 个答案:

答案 0 :(得分:1)

session对象是类字典对象,因此您可以使用字典语法来生成动态密钥:

session['manage_action_%s' % model_id] = new_action
current_action = session['manage_action_%s' % model_id]

或:

session.update(**{'manage_action_%s' % model_id: new_action})
current_action = session.get('manage_action_%s' % model_id)