web2py:动态定义的会话变量

web2py: Dynamically defined session variables

您好 web2py 社区!

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

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

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

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

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

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

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

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

因此我的问题是:

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

提前感谢您的支持,因为如果有解决方案就太好了...

此致, 克莱门斯

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)