在 Python 中快速创建一些简单 HTML 的最简单方法是什么?到目前为止,我发现的只是复杂的模板系统或用于 HTML 生成的类,其 API 似乎比我需要的要重得多。
我可以自己把字符串粘在一起,但我认为可能有一个库可以为我节省一点时间。
编辑——我决定仔细研究一下 Jinja2 模板系统。看起来它在未来的某个时候可能会有用,而且看起来不像我想的那样需要花很多时间来弄清楚。
在 Python 中快速创建一些简单 HTML 的最简单方法是什么?到目前为止,我发现的只是复杂的模板系统或用于 HTML 生成的类,其 API 似乎比我需要的要重得多。
我可以自己把字符串粘在一起,但我认为可能有一个库可以为我节省一点时间。
编辑——我决定仔细研究一下 Jinja2 模板系统。看起来它在未来的某个时候可能会有用,而且看起来不像我想的那样需要花很多时间来弄清楚。
quixote是一个陈旧但仍然令人着迷的框架——它基本上是“在 Python 中嵌入 HTML”(而不是像所有流行的模板系统那样反之亦然)。
概述中的一个简单示例:
def format_row [html] (head, value):
"<tr valign=top align=left>\n"
" <th align=left>%s</th>\n" % head
" <td>%s</td>\n" % value
"</tr>\n"
在 Python 中,这些字符串中的第一个将是文档字符串,其他字符串将被忽略,并且[html]
部分将是语法错误。在Quixote
中,[html]
将此函数标记为“PTL”(Python 模板语言)而不是 Python 本身,用于具有此类函数的模块的文件扩展名是.ptl
,但它们仍然可以import
从 Python 中编辑,并且输出这些字符串。
我怀疑您是否想Quixote
优先采用现代 Python 模板方法,但它确实会带来有趣的阅读,恕我直言。
沿着类似的路线进一步发展是新的(尽管它更适合生成 XML,而不是 HTML 本身),尤其是。stan,典型的例子是......:
>>> from nevow import flat, stan
>>> html = stan.Tag('html')
>>> p = stan.Tag('p')
>>> someStan = html[ p(style='font-family: Verdana;')[ "Hello, ", "world!" ] ]
>>> flat.flatten(someStan)
'<html><p style="font-family: Verdana;">Hello, world!</p></html>'
有点“更酷”...因为您不必担心正确关闭标签;-)。
最后,尽管如此,如今对于生产工作而言,像jinja2或mako这样的模板系统通常是首选——主要的实际原因是表示逻辑(在模板中)与其他层(在 Python 代码中)比它们提供的更好地分离我猜想使用“在 Python 中嵌入 HTML/XML”的方法。
看看标记模块: http: //markup.sourceforge.net/
编辑:这是另一个看起来非常相似的模块:http: //www.decalage.info/en/python/html
Python string.Template 可以做你想做的事。它是内置的。
http://docs.python.org/library/string.html#template-strings
如果没有进一步的定义或示例,我无法理解“看起来更重的 API”。
如果您正在寻找基本和准系统,那么古老的HTMLgen就可以了。否则,使用模板引擎。