gpt4 book ai didi

python - 是否可以从 Django 管理页面禁用缓存?

转载 作者:行者123 更新时间:2023-12-04 15:47:21 24 4
gpt4 key购买 nike

[附加信息]

我询问了一种在站点范围内禁用缓存的方法。 这可能有点矫枉过正,因为我所需要的只是一种能够查看页面的最新版本的方法,当数据库或生成它的程序有已修改。

人们普遍认为在运行时修改设置是一个非常糟糕的主意

因此,一些想法:清除缓存 可能会起作用,发送一个标志 以指定我不想看到缓存的版本,或者指定来 self 的 IP 地址的请求不应看到缓存的页面

[原始问题]

我在 ozake.com 有一个基于 Django 的网站,并且我经常重写部分程序或更改页面内容。

每次处理它时,我都会修改 settings.py 以禁用缓存,这样我就可以实时看到我的修改。

完成后,我会重新启用缓存。

我正在使用基于文件的缓存。这是 settings.py 的相关部分:

CACHES = {
'default': {'BACKEND':
#'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/www/mysite.com/cache',

当我在网站上工作时,我注释掉最后两行并取消注释虚拟缓存行。

这意味着 SSH 进入站点,修改 settings.py,在站点上工作,然后重新修改它。

有什么办法可以使用 admin.py 将它变成/admin 中某处的复选框吗?

最佳答案

如果您只想随意使整个缓存失效,您可以创建一个简单的 View 来执行此操作:

文件views.py:

from django.core.cache import cache
from django.core.exceptions import PermissionDenied
from django.http import HttpResponse
from django.views.decorators.cache import never_cache

@never_cache
def clear_cache(request):
if not request.user.is_superuser:
raise PermissionDenied
cache.clear()
return HttpResponse('Cache has been cleared')

文件urls.py:

from django.urls import path
from . import views

urlpatterns = [
...
path('clear_cache/', views.clear_cache),
]

然后用你的浏览器调用它:

http://HOST/clear_cache

关于python - 是否可以从 Django 管理页面禁用缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55185061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com