django - 上下文处理器变量没有被更新

django - context processor variables are not being updated

我在导航栏中有几个变量要显示在每个模板上,所以我制作了一个自定义上下文处理器来处理这些变量的获取。一切正常,除了当数据库中的数据发生更改时,上下文变量的值不会刷新(例如,只有在我退出 runserver 并重新运行后它才会更新)。

这是我的基本伪代码:

context_processor.py:

foo = db.get('foo')
bar = db.get('bar')

def default(request):
    return {'foo': foo, 'bar': bar}

base.html:

{% block header %}
foo value is: {{ foo }}, bar value is {{ bar}}
{% endblock %}

{% block content %}
{% endblock %}

some_other_template.html:

{% extends "base.html" %}

{% block content %}
    ...blabla
{% endblock %}

我是否遗漏了什么或者这是正常现象吗?我在这里使用上下文处理器的方法是否错误?

当 Django 处理模板时,它会将 html 文件视为一个字符串,并在返回结果之前插入其中的变量值。这意味着这些值将保持在呈现模板时的状态。有许多方法可以实现您想要实现的目标,最简单的方法是采用 AJAX 方法并不断轮询新值。

那是因为您只在进程启动时而不是每个请求时读取它们。

您可以:

a) 在每次请求时检索它们(例如,在视图、上下文处理器等中)

b) 确保存储它们的模块变量在它们发生变化时得到更新(例如,使用 post_save 信号)。但是,如果您 运行 一个线程的多个进程...