【发布时间】:2021-09-08 18:58:44
【问题描述】:
我正在一个项目中使用销售平台。我正在尝试使用 pybars 编译具有 jinja 模板语法的电子邮件。但是 pybars 没有解析 if 条件和 for 循环语法。请指导我解析这两个。
谢谢!
context = {
"site_name": "site_name",
"order": {
"items": [
"one",
"two",
"three",
]
},
}
source = """
{% if True %}
<div>
{{ site_name}}
</div>
{% endif %}
<div>
{% for line in order.items %}
<tr>
{{ line }}
</tr>
{% endfor %}
</div>
<div>
<p><small>This email was sent to <a href="mailto:{{site_name}}">{{site_name}}</a>.</p>
</div>
"""
from pybars import Compiler
compiler = Compiler()
template = compiler.compile(source)
template(context)
我得到的输出如下。
'\n {% if True %}\n <div>\n site_name\n </div>\n {% endif %}\n\n\n <div>\n {% for line in order.items %}\n <tr>\n \n </tr>\n {% endfor %}\n </div>\n\n <div>\n\n <p><small>This email was sent to <a href="mailto:site_name">site_name</a>.</p>\n\n </div>\n\n'
【问题讨论】:
-
pybars not 渲染 Django 模板语言,它只渲染 pybars 指令:github.com/wbond/pybars3#handlebarsjs-compatibility 所以发生了什么变化,例如
mailto:...子句中的{{site_name}}是呈现为site_name本身,这可能不是本意。