我一直在努力为用户存储他们自己的模板,我知道我将不得不动态创建模板。例如:
>>> from django.template import Template
>>> Template("Testing {{test}}")
<django.template.base.Template object at 0x10c58f990>
但是,当我询问加载模板字符串时,建议我使用get_template_from_string
:
>>> from django.template import loader
>>> loader.get_template_from_string("Testing {{test}}")
<django.template.base.Template object at 0x10c8b5450>
这两种方法有什么区别?一种方式是更加pythonic,还是更喜欢另一种?
答案 0 :(得分:3)
Django documentation for the templating code使用您描述的第一种方法描述:使用Template()
。
它没有提到get_template_from_string
,也没有提到文档中的任何其他地方。
因此,我会非常依赖第一种方法的使用,因为另一种方法可能在将来更有可能发生变化,因为它是一种无证的功能。
答案 1 :(得分:2)
在当前版本的Django中,get_template_from_string只是以与你相同的方式实例化一个新模板。
def get_template_from_string(source, origin=None, name=None):
"""
Returns a compiled Template object for the given template code,
handling template inheritance recursively.
"""
return Template(source, origin, name)
源代码在这里:https://github.com/django/django/blob/master/django/template/loader.py