首页 文章

web2py:动态定义的会话变量

提问于
浏览
0

您好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的任何值) . 但它不是一个真实的,可重用的和可读的会话变量 .

因此我的问题是:

How can I generate a dynamically defined session variable depending on a variable value read on runtime?

感谢您提前获得任何支持,因为有一个解决方案是很好的...

最好的问候,克莱门斯

1 回答

  • 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)
    

相关问题