2016-11-16 2 views
0

Привет, сообщество web2py!web2py: Динамически определенные переменные сеанса

Я в настоящее время разрабатывает механизм управления между компонентами всех работающих на общий кластер данных с именем модель которая идентифицируется 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). Но это не реальная, многоразовая и читаемая переменная сеанса.

Таким образом, мой вопрос:

Как я могу генерировать динамически определенный переменный сеанс в зависимости от значения переменного для чтения во время выполнения?

Спасибо за любую поддержку заранее, так как это было бы здорово иметь решение для этого ...

С наилучшими пожеланиями, Clemens

ответ

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) 
+0

Как всегда, ваш ответ - это решение ... большое спасибо, Энтони! – Clemens

Смежные вопросы