1

我一直在研究一种让用户存储他们自己的模板的方法,我知道我将不得不即时创建模板。例如:

>>> 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,还是更喜欢另一种方式?

4

2 回答 2

3

模板代码的Django 文档描述了使用您描述的第一种方法:使用Template().

它没有提及get_template_from_string,文档中的其他任何地方也没有提及。

因此,我会严重依赖第一种方法的使用,因为另一种可能在未来更有可能发生变化,因为它是一个未记录的函数。

于 2012-11-14T18:09:58.967 回答
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

于 2012-11-14T16:53:46.613 回答