给定一个 Jade 模板和一个字典,我如何使用字典来填充 Jade 模板?例如,
>>> data = {
... 'name': "World",
... 'ages': [10, 20, 30]
... }
>>> template = """
... html
... body
... h1 "Hello, #{name}!"
... each age in ages
... h3 "Age: #{age}"
... """
>>> print interpolate(template, data)
<html>
<body>
<h1>Hello, World!</h1>
<h3>Age: 10</h2>
<h3>Age: 20</h2>
<h3>Age: 30</h2>
</body>
</html>
我一直在研究pyjade
,但我无法弄清楚像interpolate
这样的函数是在哪里定义的。如何编写插值
?
最佳答案
pyjade
不提供直接插入 jade 和 python 对象的选项;相反,它允许将 jade 转换为对另一个模板引擎(例如 Jinja2)友好的格式。然后,该模板引擎可以为您进行插值。例如,
data = {
'name': "World",
'ages': [10, 20, 30]
}
template = """
div
h1 "Hello, #{name}!"
each age in ages
h3 "Age: #{age}"
"""
def interpolate(template, data):
import os
from jinja2 import Environment
env = Environment(
loader = FileSystemLoader(os.getcwd()),
extensions = ['pyjade.ext.jinja.PyJadeExtension']
)
# write template to disk (there's probably a way around this?)
with open("templates/template.jade", "w") as f:
f.write(template.strip())
return (
env
.get_template("templates/template.jade")
.render(data)
)
print interpolate(template, data)
# <div>
# <h1>"Hello, World!"</h1>
# <h3>"Age: 10"</h3>
# <h3>"Age: 20"</h3>
# <h3>"Age: 30"</h3>
# </div>
关于python - 插入 Jade 和 Python 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19800967/