我曾经能够导入django.template.loader.template_source_loaders
并在所有加载器上调用reset()
来重置所有模板加载器缓存,但这不再有效。
如何在Django 1.9中重置模板加载器缓存?
我的设置,以防这有用:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'accounts/templates')],
'APP_DIRS': True
}
]
这是我加载模板的方式:
from django.template import TemplateDoesNotExist
from django.template.loader import get_template
from django.template.response import TemplateResponse
from django.http import HttpResponse
from django.views.decorators.cache import never_cache
from django.views.decorators.csrf import ensure_csrf_cookie
@never_cache
@ensure_csrf_cookie
def view(request, **kwargs):
try:
template = get_template('index.html')
except TemplateDoesNotExist:
return HttpResponse("Run `make template`")
return TemplateResponse(request, template)
我在使用内置runserver
的本地开发人员遇到此问题,DEBUG = True。该问题不适用于生产,因为模板将始终存在。
答案 0 :(得分:2)
Django不缓存模板,而是does cache应用程序目录加载器使用的应用程序模板目录列表。如果您创建一个新目录,例如polls/templates
启动服务器后,Django将不会在此目录中选择模板,直到服务器重新启动。
答案 1 :(得分:0)
真的很简单:
from django.template.utils import get_app_template_dirs
get_app_template_dirs.cache_clear()