我编写了一个自定义模板加载器,模板可能会在服务器的生命周期内发生变化。根据我的理解,第一次加载模板时,它会被解析到内存中的节点树中,然后被缓存。
是否可以通过发出命令说“卸载此模板以便下次重新加载”来使此缓存无效?或者我的模板加载器可以解决这个问题吗?
答案 0 :(得分:2)
此:
第一次加载模板时,它会被解析到内存中的节点树中,然后被缓存
不是真的。模板仅在您要求时才会被缓存。您可以启用caching template loader,但默认情况下不启用。
因此,在回答您的问题时,如果您使用的是自定义加载程序并且不希望它们被缓存,请不要将该功能放入自定义加载程序中。
答案 1 :(得分:0)
我很确定你正在做一些你不想做的事情。那说......
绕过缓存的方法是绕过加载器系统并手动从文件加载模板:
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
})