[英]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信號)進行更新。 但是,如果您使用一個線程運行多個進程,這將使您容易遇到意外行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.