Django/Django-CMS 具有旧值的会话变量

Django/Django-CMS Session variables with old values

我在 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

但问题依旧。

有什么想法吗?

谢谢:)

按照@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 缓存。

谢谢大家:)