用法
django.template.loader定义了两个函数以加载模板。
get_template(template_name,using = None) 该函数使用给定的名称加载模板并返回一个Template对象. 真正的返回值类型取决于那个用来加载模版的后台引擎。每个后台都有各自的Template类。get_template()尝试获取每个模板直到有一个成功满足。如果模板不能成功找到,将会抛出TemplateDoesNotExist。如果能够找到模板但是包含非法值,将会抛出TemplateSyntaxError。 模板的查找和加载机制取决于每种后台引擎和配置 如果你想使用指定的模板引擎进行查找,请将模板引擎的NAME赋给 get_template的using参数select_template(template_name_list,using = None)get_template()和select_template()很相似, 只不过它用了一个模板名称的列表作为参数。按顺序搜索模板名称列表内的模板并返回第一个存在的模板。
由select_template()和get_template()返回的Template对象必须要有一个render()方法,协议如下:
Template.render(context=None,request=None)
通过给定的 context 对该模板进行渲染。
如果提供了context,那么它必须是一个dict对象.如果没有提供,引擎将是用空 context 对模板进行渲染。
如果要提供request参数 ,必须使用HttpRequest对象.之后模板引擎会使它连同CSRF token一起在模板中可用。具体如何实现由相应模板后端决定。
如果可能(其实这会更好)—将模版文件,放在包含模版的目录的子目录下。基本思路是,使得每个APP的的模版子目录下都有一个子目录来唯一对应这个APP。
这样做可以增强你的APP可用性。将所有的模版放在根模版目录下会引发混淆。
另外,为了减少加载模板、渲染模板等重复工作,django提供了处理这些工作的快捷函数。
render_to_string(template_name,context=None,request=None,using=None)
render_to_string()会像get_template()一样加载模板并立即调用render()方法。它需要以下参数。
TEMPLATE_NAME要加载和呈现的模板的名称。如果是模板名称列表,Django使用select_template()而不是
get_template()来查找模板。context要用作模板的上下文进行渲染的dict。
requestHttpRequest是可选的,并且在整个模版渲染期都是可用的。
using一个可选的模板引擎NAME。
搜索模板将仅限于该引擎。
用法示例:
from django.template.loader import render_to_string
rendered = render_to_string('my_template.html', {'foo': 'bar'})另请参阅调用render_to_string()的render()快捷方式,并将结果馈送到适合从视图返回的HttpResponse。
最后,您可以直接使用配置的引擎:engines
模板引擎可在django.template.engines中使用:
from django.template import engines
django_engine = engines['django']
template = django_engine.from_string("Hello {{ name }}!")在此示例中,查找键 -'django'是引擎的NAME。
Last updated