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 的任何值)。但它不是一个真实的,可重用的和可读的会话变量。
因此我的问题是:
如何根据运行时读取的变量值生成动态定义的会话变量?
感谢您提前获得任何支持,因为为此提供解决方案会很棒...
祝你好运, 克莱门
答案 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)