Python中的简单HTML模板

时间:2012-07-25 09:42:36

标签: python html template-engine

我想用Python中的数据填充HTML模板。虽然我不知道任何HTML,但我的同事会准备HTML模板,而我提供数据。但是,他对Python知之甚少。

你能否建议一个非常基本的模板框架,它可以很好地处理HTML和Python的这种分离(即HTML中没有太多特殊的语法;在Python数据代码中我没有太多的HTML知道)?理想情况下,HTML模板应该非常接近纯HTML。

我也会将表作为数据,所以如果我不必准备HTML表代码就好了,但他可以用一些最小的标记逻辑来做。 理想情况下,即使我的同事使用CSS等更高级的概念,系统也应该有效。

我找到了extensive list,但很难判断哪个系统最符合我的要求,因为我不懂技术语言。

编辑:重点是我们是新手,我们只需要一个基本的解决方案:) - 但理想情况下我没有HTML,也没有超出普通HTML的范围。

3 个答案:

答案 0 :(得分:13)

django有非常好的强大模板引擎,其目的是将HTML与python逻辑分开(但这需要你完全使用django,所以如果你只是想要模板,这可能是一种过度杀伤)。

如果您的模板真的简单(没有循环),您可能会使用本机python string.format函数(我在一个生成配置文件到一些Fortran代码的副项目中使用它,它并不是那么糟糕)。

其他选择可能是jinja2,它与django模板非常接近,但是独立且功能更强大。

答案 1 :(得分:3)

我可以建议同时查看web2py吗?在最基本的层面上,您可以简单地让您的同事创建html文件,然后您需要将数据替换为{{= var}},可以通过用python函数编写的web2py控制器检索var。从函数中,您可以将数据放在一起,并使用"返回dict(var = var)"返回html视图。

如果您的观点如下:

<html>
    <head>
        <title>some title</title>
    </head>
    <body>
        <h1>{{=message}}</h1>
    </body>
</html>

控制器可能如下所示:

def index():
    message = "Hello World"
    return dict(message=message)

您也可以像其他人提到的那样使用django,但请查看某些web2py documentation的链接

答案 2 :(得分:0)

python中的简单模板是:https://docs.python.org/3.6/library/string.html#template-strings

语言随附,无需外部库。

以下是使用模板的示例:

>>> from string import Template
>>> s = Template('$who likes $what')
>>> s.substitute(who='tim', what='kung pao')
'tim likes kung pao'
>>> d = dict(who='tim')
>>> Template('Give $who $100').substitute(d)
Traceback (most recent call last):
...
ValueError: Invalid placeholder in string: line 1, col 11
>>> Template('$who likes $what').substitute(d)
Traceback (most recent call last):
...
KeyError: 'what'
>>> Template('$who likes $what').safe_substitute(d)
'tim likes $what'