Django 模板在更新后没有改变(可能缓存)

Posted

技术标签:

【中文标题】Django 模板在更新后没有改变(可能缓存)【英文标题】:Django template is not changed after update (possible cache) 【发布时间】:2019-01-15 18:48:16 【问题描述】:

我对 Django 有疑问。可能与它的缓存有关。 1.11版

我在 urlpatterns 中使用模板,例如:

urlpatterns = [
    url(r'^service_preview/', include(serviceprev_urls, namespace = 'service_preview')),
    url(r'^service_preview/',TemplateView.as_view(template_name='service_preview.html')),
]

在对我的模板进行大量更新后,更改不再出现在用户的浏览器中。在浏览器中预览源代码时,我的模板文件夹中有实际的模板和一些以前的版本。如果我重命名模板(这应该会引发错误,因为模板不存在),我仍然在浏览器源代码中有以前的模板。浏览器页面刷新、清除浏览器缓存等无济于事。我的模板文件夹中没有此页面的重复项。

当我使用另一个模板时,一切正常。 可能,问题出在 django 缓存中。我不知道如何强制清除缓存,也许这是一个解决方案。

我把它放在应用程序设置文件中,但它没有帮助。

CACHES = 'default': 'BACKEND': 'django.core.cache.backends.dummy.DummyCache',

编辑: 我发现我有重复的 html 名称,位于同一个项目中,但位于其他应用程序的模板目录中。会不会引起问题

【问题讨论】:

你有没有试过在浏览器中ctrl+f5清理缓存看看是否有效 试过了,没有效果(在其他电脑浏览器显示我的旧页面)。今天浪费了 2 个小时后,我找到了“解决方案”——我在项目和模板文件夹中重命名了模板以强制它正常工作。 是的,但这对我来说似乎不是一个解决方案......但我希望它对你有用 【参考方案1】:

默认情况下,Django 模板加载器caches templates 当DEBUG = False。更改模板后,您需要重新启动服务器(例如 Apache 或 gunicorn)以查看更改。此行为不受CACHES 设置的影响。

【讨论】:

debug 是(并且是)True,runserver 命令重启了好几次都没有成功解决 rtemplate 问题 @Vova 您如何解决这个问题,因为我目前遇到了同样的问题。 @Nnaobi 查看原始问题中的编辑。看起来问题在于两个模板具有相同的名称,并且他们正在编辑 Django 未使用的模板。给模板一个唯一的名字解决了这个问题。 我发现我有一个类似名称的应用程序...在我的模板中使用 app_name:view_name 有助于解决我的问题

以上是关于Django 模板在更新后没有改变(可能缓存)的主要内容,如果未能解决你的问题,请参考以下文章

Celery框架 接口缓存, Celery框架, Django项目实现轮播图缓存更新

Django:即使使用缓存中的数据,模板加载也很慢

django缓存

带有缓存加载器的 Jinja2 与 django 模板 - 性能比较如何?

如何在 Django 中显式重置模板片段缓存?

django缓存机制