template.render()Google App Engine(python)

时间:2010-02-01 19:52:31

标签: google-app-engine

我正在使用谷歌的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()吗?

(我无法在谷歌应用引擎上找到模板类的文档,因此我问。)

4 个答案:

答案 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))