Переменные сессии Django/Django-CMS со старыми значениями

У меня есть сайт в Django/Django-CMS, на котором я хочу сохранить некоторые данные с одной страницы на другую. Я сохраняю данные в session переменная:

request.session['yb_name'] = request.POST.get('name')

Проблема в том, что иногда мои страницы получают и старые значения yb_name вместо нового. Я печатаю переменную в моем процессоре контекста, и значение является правильным, но в шаблоне показано мне и старое. Это не происходит каждый раз. Также это происходит внутри шаблонов из пользовательских плагинов, которые я сделал.

Я печатаю это в шаблоне так:

<input type="text" name="name" value="{{ request.session.yb_name|default_if_none:'' }}">

Первым делом я попытался удалить переменную, а затем снова создать ее с новым значением:

if request.session.get('yb_name', None):
    del request.session['yb_name']
request.session.modified = True
request.session['yb_name'] = request.POST.get('name')
request.session.modified = True

Но проблема сохраняется.

Любая идея, что я мог бы быть?

Спасибо:)

1 ответ

Решение

По предложению @Paulo я отключил кеш CMS. В моем settings.py В файл я добавил следующие строки:

CMS_PAGE_CACHE = False
CMS_PLACEHOLDER_CACHE = False 
CMS_PLUGIN_CACHE = False

Это отключает весь кеш, но, как подсказывает @brunodesthuilliers, в работе это может быть плохо, поэтому я немного искал в Django-CMS документацию и нашел настройки, которые можно поставить, чтобы отключить только некоторые плагины:

class HistoryHeaderCMSPlugin(CMSPluginBase):
    render_template = "plugins/history/header.html"
    name = _("History Header")
    model = HistoryHeaderPlugin
    cache = False

    def render(self, context, instance, placeholder):
        context = super(HistoryHeaderCMSPlugin, self).render(context, instance, placeholder)
        return context

cache = False в плагинах, которые использовали мои переменные сессий, решил мою проблему, не потеряв все CMS кэш.

Спасибо вам всем:)

Другие вопросы по тегам