Прежде всего, вы можете получить доступ к запросу и, следовательно, session
в фильтре.
Решение, которое вы пытаетесь использовать, не работает по нескольким причинам.
Настройки импортируются один раз
Когда вы импортируете объект модуля, подобный этому, в другой модуль (например, myapp.views
):
from settings import CURRENCY
изменения, внесенные в settings.CURRENCY
, не будут видны в модуле views
. Импорт происходит один раз, и значение во время импорта привязывается к переменной в модуле.
Несколько рабочих
Даже если вы измените переменную в модуле views
, существует другая проблема. Если вы работаете с сервером без разработки (например, gunicorn), он запускает несколько процессов для обработки запросов. Может случиться, что изменение, внесенное в настройки, обрабатывается одним процессом, а следующий запрос обрабатывается другим работником, имеющим старое значение.
Должно быть одно место, где хранятся эти настройки. Сессия - хорошее место, поскольку она глобальна и приватна для пользователя.