开发者

template.render() Google App Engine (python)

I'm using the webapp framework from google for this. 开发者_运维技巧I'm using template.render() in a get method to render a template for me.

I'm using the following code to do this for me

path = os.path.join(os.path.dirname(__file__), file_name)
self.response.out.write(template.render(path, template_values))

Where file_name is the template to render and template_values is a dict() containing any values to be rendered. What if I don't have any values that I want rendered. Do I just pass in an empty dict() object? It doesn't seem like a great solution to me. Should I be using template.load() instead?

(I can't find the docs for the template class over on google app engine either, hence I'm asking.)


You can pass an empty dictionary to it and it doesn't mind. You just have to send it something. Your templates just won't display anything.

template_values = {}

path = os.path.join(os.path.dirname(__file__), file_name)
self.response.out.write(template.render(path, template_values))


Okay, thanks for all the answers.

What I've done is:

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

Which seems to be the most pythonic solution I could come up with.


Since you are rendering a Django template, you need to use render, and you probably can't provide an empty dictionary, as it will complain about not being able to find the variables it expects, unless you enclose each variable reference in an {% if %} block. You should provide a dictionary with all of the keys that the template expects but with empty strings as values.


If you have no template variables to pass in, just pass an empty dictionary. If you do use any variables in the template, they will all evaluate as None.

To make this easier, you could modify your helper code:

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))
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜