如何在Django 1.9中重置模板加载器缓存?

时间:2016-05-03 09:20:41

标签: django django-templates

我曾经能够导入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。该问题不适用于生产,因为模板将始终存在。

2 个答案:

答案 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()