用法
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
。
request
HttpRequest
是可选的,并且在整个模版渲染期都是可用的。
using
一个可选的模板引擎NAME
。
搜索模板将仅限于该引擎。
用法示例:
另请参阅调用render_to_string()
的render()
快捷方式,并将结果馈送到适合从视图返回的HttpResponse
。
最后,您可以直接使用配置的引擎:engines
模板引擎可在django.template.engines
中使用:
在此示例中,查找键 -'django'
是引擎的NAME
。
Last updated