Python django-未更新上下文处理器变量
我在导航栏中有几个变量,它们将显示在每个模板上,因此我制作了一个自定义上下文处理器来处理这些变量的获取。一切都正常,只是当数据库中的数据发生更改时,上下文变量的值不会刷新(例如,只有在我退出Python django-未更新上下文处理器变量,python,django,processor,Python,Django,Processor,我在导航栏中有几个变量,它们将显示在每个模板上,因此我制作了一个自定义上下文处理器来处理这些变量的获取。一切都正常,只是当数据库中的数据发生更改时,上下文变量的值不会刷新(例如,只有在我退出runserver并重新运行后,它才会更新) 以下是我的基本伪代码: context_processor.py: foo = db.get('foo') bar = db.get('bar') def default(request): return {'foo': foo, 'bar': bar}
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_保存信号)。但是,如果您使用一个线程运行多个进程,这将使您面临意外行为。感谢您的澄清和建议!非常感谢你!我已经意识到现在发生了什么。(我投了你的赞成票,但不确定是谁投了你的反对票……/)