簡體   English   中英

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信號)進行更新。 但是,如果您使用一個線程運行多個進程,這將使您容易遇到意外行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM