我写了一个自定义模板加载器和模板可以在服务器的生命周期内发生改变。据我了解,第一次加载模板时,它被分析到内存节点树中,然后被缓存。是否有可能在Django中重新加载模板?
是否有可能通过发出命令说“卸载该模板因此被重新加载下一次”这个缓存失效?或者我的模板加载器可以处理这个问题?
我写了一个自定义模板加载器和模板可以在服务器的生命周期内发生改变。据我了解,第一次加载模板时,它被分析到内存节点树中,然后被缓存。是否有可能在Django中重新加载模板?
是否有可能通过发出命令说“卸载该模板因此被重新加载下一次”这个缓存失效?或者我的模板加载器可以处理这个问题?
此:
第一次模板被加载它被解析到内存节点树中并且之后被缓存
不是真的。如果你问他们,模板只会被缓存。您可以启用caching template loader,但默认情况下它未启用。
所以,在回答你的问题,如果你使用一个自定义的加载,你不希望他们被缓存,不要把该功能集成到您的自定义加载程序。
我敢肯定,你做你不想做的东西。绕过缓存也就是说......
的方式是绕过装载系统和手动从文件加载模板:
from django.http import HttpResponse
from django.template import Template, RequestContext
# open the template file and save it to a string in memory
template_as_string = open('/path/to/template/file.html').read()
# make any dynamic modifications to your template string here,
# including saving back to file if necessary
# get and render a Django template, return an HttpResponse
template = Template(template_as_string)
return HttpResponse(template.render(context=RequestContext(request, {
# variables to be sent to the template for rendering
})
很酷。我认为这可能是'django.template.loaders.cached.Loader'的原因,但想确定。 – Joe