是否可以在Django中重新加载模板?

时间:2011-12-01 15:41:46

标签: django django-templates

我编写了一个自定义模板加载器,模板可能会在服务器的生命周期内发生变化。根据我的理解,第一次加载模板时,它会被解析到内存中的节点树中,然后被缓存。

是否可以通过发出命令说“卸载此模板以便下次重新加载”来使此缓存无效?或者我的模板加载器可以解决这个问题吗?

2 个答案:

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