使用template.render()而不使用文件引用

时间:2011-07-12 20:02:16

标签: python google-app-engine template-engine

是否可以在没有文件路径的情况下使用template.render()?

我想在我的数据存储区中为文本属性执行动态字符串替换。立即想到了模板。也许还有另一种方式?我的想法如下......

my_string = template.render(my_model.description,template_dict)

2 个答案:

答案 0 :(得分:1)

从“google-app-engine”标签来看,我假设你在谈论google.appengine.ext.webapp提供的模板引擎?根据{{​​3}}:“为方便起见,webapp模块包含Django的模板引擎”。那么看看documentation ...

据我所知,您应该可以执行以下操作(我假设my_model.description包含您的模板字符串?):

t = template.Template(my_model.description)
my_string = t.render(template.Context(template_dict))

(查看Django docs for templates

的webapp代码可能也很有用

答案 1 :(得分:0)

没有官方支持的方法来使用基于非文件的模板与webapp template.render()

这是一种适用于1.5.1的不支持的方式(之后很可能工作):

class StringTemplate(webapp.RequestHandler):
  def get(self):
    import django.template
    mytemplate = "<html>...</html>"
    t = django.template.Template(mytemplate)
    fake_path = os.path.abspath("main.py") # or any uploaded file
    template.template_cache[fake_path] = t
    self.response.out.write(template.render(fake_path, {})
使用

app.yaml是因为模板缓存使用模板的绝对路径作为键,因此任何真实文件都将作为伪模板源。但这是一个可能会改变的实施细节。