python - 插入 Jade 和 Python 字典

标签 python pug pyjade

给定一个 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/

相关文章:

python - 如果我计划运行一个使用 pyautogui 的 python 脚本,它可以同时运行多台计算机还是只能运行一台计算机?

python - 基于列的分组和取消分组

python - 使用特定信号终止通过 asyncio 运行的外部程序

python - 使用 Zappa 部署 Flask 应用程序时出错

html - Pug (Jade) HTML 表单

javascript - Sublime 3 包用于 Jade Syntax Highr、Linting、自动完成等

javascript - Jade for 循环与 #{self.variable} 不固定列表

javascript - 无法将json数据添加到pyjade中的数据属性

python - 如何在 pyjade 中包含内联内容

Django找不到jade模板