Значение Django View не обновляется в шаблоне, если не перезапустить gunicorn.socket (установка: Django + Gunicorn + Nginx)
У меня есть небольшой Django-сайт, работающий на Ubuntu 22.04 на Linode. Он использует Nginx и Gunicorn для обслуживания страницы Django.
Теперь я пытаюсь понять, как получить последнее значение сегодняшней даты и времени из views.py при обновлении страницы; похоже, что оно где-то кэшируется.
Мое представление содержит следующее:
import datetime
class MonitorView(LoginRequiredMixin, ListView):
[...]
def get_context_data(self, **kwargs):
context_data = super().get_context_data(**kwargs)
context_data['todayvalue'] = datetime.datetime.today()
return context_data
А мой шаблон содержит:
{% extends 'base.html' %}
{% block title %}
DummyTitle
{% endblock title %}
{% block content %}
{{todayvalue}}
{% endblock content %}
При загрузке шаблона это {{todayvalue}} печатает "11 августа 2022 года, 8:32 утра". А при повторном обновлении шаблона через 10 минут это {{todayvalue}} все еще печатает "Aug. 11, 2022, 8:32 a.m.".
Когда я перезапускаю gunicorn.socket (sudo systemctl restart gunicorn.socket), значения обновляются.
Похоже, что gunicorn выполняет какое-то кэширование. Меня еще больше смущает то, что другие значения в представлениях прекрасно обновляются в шаблоне, не требуя перезапуска gunicorn.socket. Например, это значение в представлении:
total_monthly_sent_volume = DailyStats.objects.filter(sg_date__gt=last_month).aggregate(Sum('sg_processed'))
context_data['total_monthly_sent_volume'] = total_monthly_sent_volume
представлен в шаблоне практически таким же образом, с {{total_monthly_sent_volume}}
. Это показывает сумму, и, обновив страницу, вы получите обновленное значение суммы.
Итак, у меня два вопроса:
- Почему {{today}} требует перезапуска gunicorn.socket, а {{total_monthly_sent_volume}} - нет?
- Каков элегантный способ получения последнего значения для {{today}}, показанного в шаблоне, не требующий перезапуска gunicorn.socket?
Спасибо!