【问题标题】:web2py: Dynamically defined session variablesweb2py:动态定义的会话变量
【发布时间】:2016-11-16 11:00:01
【问题描述】:

你好 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 的值)。但它不是一个真实的、可重用和可读的会话变量。

所以我的问题是:

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

提前感谢您的任何支持,因为如果有解决方案会很棒...

最好的问候, 克莱门斯

【问题讨论】:

    标签: web2py


    【解决方案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)
    

    【讨论】:

    • 一如既往,您的答案就是解决方案……非常感谢,安东尼!
    猜你喜欢
    • 1970-01-01
    • 2015-04-21
    • 2023-03-14
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 2015-11-05
    相关资源
    最近更新 更多