6

这是 Python 中最简单、轻量级的 html 模板引擎,我可以使用它来生成自定义的电子邮件通讯。

4

5 回答 5

17

对于一个非常小的模板任务,Python 本身并没有那么糟糕。例子:

def dynamic_text(name, food):
    return """
    Dear %(name)s,
    We're glad to hear that you like %(food)s and we'll be sending you some more soon.
    """ % {'name':name, 'food':food}

从这个意义上说,您可以在 Python 中使用字符串格式化来进行简单的模板化。这几乎是轻量级的。

如果你想更深入一点,Jinja2在许多人看来是最“设计师友好”(阅读:简单)的模板引擎。

您还可以查看 Mako 和 Genshi。最终,选择权在您手中(具有您想要的功能并与您的系统完美集成的功能)。

于 2010-12-10T06:04:55.007 回答
16

string.Template有什么问题吗?这是在标准 Python 发行版中,并由PEP 292涵盖:

from string import Template

form=Template('''Dear $john,

I am sorry to imform you, $john, but you will not be my husband
when you return from the $theater war. So sorry about that. Your
$action has caused me to reconsider.

Yours [NOT!!] forever,

Becky

''')

first={'john':'Joe','theater':'Afgan','action':'love'}
second={'john':'Robert','theater':'Iraq','action':'kiss'}
third={'john':'Jose','theater':'Korean','action':'discussion'}

print form.substitute(first)
print form.substitute(second)
print form.substitute(third)
于 2010-12-10T06:06:21.623 回答
1

我认为Werkzeug 迷你模板非常符合要求。

这是Github 上的源代码

于 2010-12-10T06:05:53.343 回答
0

在 Google 中搜索小模板 Python出现了 Titen,其源代码只有5.5 kB。Titen 可以对列表进行迭代,而内置的str.format不能。

Mako声称是轻量级的,但与 Titen 相比,它相对较胖 (>200 kB)。Jinja2 和 Django 模板也超过 100 kB。

于 2014-02-10T23:34:27.767 回答
-2

试试python-micro-template:

https://github.com/diyism/python-micro-template

用法示例(kivy):

import python_micro_template
...
kvml=open('example_kivy_scrollview.kvml', 'r').read()
kvml=python_micro_template.tpl.parse(kvml)
grid=Builder.load_string(kvml)
...

模板示例(kvml):

<:for i in range(30):#{#:>
Button:
    text: '<:=i:><:for j in range(6):#{#:><:=j:><:#}#:>'
    size: 480, 40
    size_hint: None, None
<:#}#:>
于 2014-02-26T02:41:00.637 回答