++++见底部的解决方案(第二次更新)++++
我是 Google App Engine 和 Python 的相对新手。
我有许多 jinja2 模板(以编程方式生成),它们存储为 blob(因为 GAE 不允许程序写入文件)。我现在想渲染这些 blob 模板,但我不知道如何在渲染语句中引用它们。
如果需要,我可以将这些模板存储在 blobstore 中。
任何建议将不胜感激。这样的渲染语句看起来像什么的一个例子是超级的。
(我在标签中包含了 Django,因为我怀疑引用 Django 的模板可能是相似的。)
感谢您的任何帮助。
++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++ 修改后的问题跟进试图使用变量作为 jinja2 的模板源 ++++ +++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++ 我试图让它与 TextProperty 字段一起使用并进行了一个简单的测试(假设我已经检索了文本字段),如下所示:
FileTxt = '<html><body><br /><br /><p>The first test value starts here {{val1}}. And {{val2}} is the 2nd test value.</p></body></html>'
val1 = 'H value 1 H'
val2 = 'H second value H'
self.render_template(FileTxt, {'val1': val1, 'val2': val2})
这将返回“无效文件名”错误。
我注意到它正在尝试打开文件 ...\templates\...
我怀疑我必须以某种方式修改以下内容。
TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'templates')
jinja_environment = \
jinja2.Environment(loader=jinja2.FileSystemLoader(TEMPLATE_DIR))
我将如何修改它以使其与变量而不是文件中的模板一起使用?或者我还需要做什么才能使无文件版本工作?
谢谢。
++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !感谢你们俩!++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++
class TextFileRender(BaseHandler):
def get(self):
val1 = 'H value 1 H'
val2 = 'H second value H'
env = jinja2.Environment(loader=jinja2.FunctionLoader(loader))
self.render_template(env.get_template('y'), {'val1': val1, 'val2': val2})
然后我在一个单独的 .py 文件中添加了加载器(不知道为什么我总是必须有我想在一个单独的文件中调用然后添加到导入的函数)
def loader(x):
r = '<html><body><br /><br /><p>The first test value starts here {{val1}}. And {{val2}} is the 2nd test value.</p></body></html>'
return r
以上工作。但现在我的问题是一个变量中的 html 内容扩展了另一个 html 模板(也存储在数据存储中)。我可以在 html ({% extends "master_template.html" %}) 中以某种方式使扩展语句类似于 {% extends nv.get_template('master_template') %} 吗?
再次感谢你的帮助。