我正在使用谷歌的webapp框架。我在get方法中使用template.render()来为我渲染模板。
我正在使用以下代码为我执行此操作
path = os.path.join(os.path.dirname(__file__), file_name)
self.response.out.write(template.render(path, template_values))
其中file_name是要呈现的模板,template_values是包含要呈现的任何值的dict()。如果我没有任何我想要呈现的值,该怎么办?我是否只传入一个空的dict()
对象?对我来说这似乎不是一个很好的解决方案。我应该使用template.load()
吗?
(我无法在谷歌应用引擎上找到模板类的文档,因此我问。)
答案 0 :(得分:5)
您可以将空字典传递给它,但它并不介意。你只需要发送一些东西。您的模板不会显示任何内容。
template_values = {}
path = os.path.join(os.path.dirname(__file__), file_name)
self.response.out.write(template.render(path, template_values))
答案 1 :(得分:4)
好的,谢谢你的所有答案。
我所做的是:
def render_template(template_name, template_values=dict()):
path = os.path.join(os.path.dirname(__file__), template_name)
self.response.out.write(template.render(path, template_values))
这似乎是我能提出的最琐碎的解决方案。
答案 2 :(得分:1)
由于您正在渲染Django模板,因此您需要使用渲染,并且您可能无法提供空字典,因为它会抱怨无法找到它所期望的变量,除非您将每个变量引用括起来一个{%if%}块。您应该提供一个字典,其中包含模板所需的所有键,但是将空字符串作为值。
答案 3 :(得分:1)
如果没有要传入的模板变量,只需传递一个空字典即可。如果您在模板中使用任何变量,它们都将评估为无。
为了简化这一过程,您可以修改您的帮助程序代码:
def render_template(template_name, template_values = None):
if template_values is None:
template_values = {}
path = os.path.join(os.path.dirname(__file__), template_name)
self.response.out.write(template.render(path, template_values))