Глобальные переменные в контроллерах web2py

Я хочу использовать глобальные переменные в контроллере web2py, но, как я обнаружил, контроллеры загружаются при каждом запросе. Так что моя глобальная переменная доступна везде, но только для чтения. Изменения не отражаются в сеансах/запросах.

Можно ли где-то определить глобальные переменные? Я пытался поместить глобальный объект в контроллер, я также пытался поместить его в модель/db.py.


person Jiri    schedule 14.12.2010    source источник


Ответы (1)


Попробуйте использовать базу данных. Например, вы можете создать таблицу настроек:

db.define_table('settings,
    Field('max_size', 'integer', default=10),
    Field('summary', 'text', 'abc'),
    ...
)
# create an instance of settings table
settings = db(db.settings.id > 0).select().first()
if not settings:
    settings = db.settings.insert()

А затем получить к нему доступ с помощью:

settings.max_size # get the value
settings.update_record(summary=new_summary) # set a value 
person hoju    schedule 16.12.2010
comment
Я должен попробовать. Я думал о том, чтобы вообще не использовать базу данных, но, как я теперь понимаю, из-за архитектуры, которая позволяет масштабировать и т. д., необходимо избегать глобальных переменных. Я начал работать над объектом, который инкапсулирует доступ к таблице БД с помощью update+commit после setattr. - person Jiri; 17.12.2010