4

我正在破解一个快速而肮脏的 python 脚本来生成一些报告作为静态 html 文件。

什么是在 Web 应用程序上下文之外轻松构建静态 html 文件的好模块?

我的目标是简单(HTML 不会很复杂)和易用性(我不想写很多代码只是为了输出一些 html 标签)。

我在第一次谷歌搜索中发现了两种选择:

另外,我觉得使用模板引擎会过分杀戮,但如果你有不同,请说出来并说明原因。

还有什么推荐吗?

4

6 回答 6

6

也许您可以尝试使用Markdown,并即时将其转换为 HTML?

于 2010-10-08T03:04:45.647 回答
4

您不一定需要复杂的东西 - 例如,这里有一个大约 150 行的库,可以以功能方式生成 HTML:

http://github.com/Yelp/PushmasterApp/blob/master/pushmaster/taglib.py

(完全披露,我与最初编写该版本的人一起工作,我自己也使用它。)

于 2010-10-08T03:12:21.070 回答
3

为什么模板引擎一定会矫枉过正?您不需要整个 Web 框架来使用模板引擎(至少,对于大多数模板引擎)。例如Mako可以单独使用,我经常用它来生成 html 文件(来自 db 的报告等)

于 2010-10-08T10:02:46.063 回答
2

如果您只有一些简单的静态 HTML 文件。那为什么不使用这样的字符串模板呢。

import string

TEMPLATE_FORMAT = """
<html>
<head><title>Trial</title></head>
<body>
    <div class="myclass">$my_div_data</div>
</body>
"""
my_div_data = "some_data_to_display_in_HTML"
TEMPLATE    = string.Template(TEMPLATE_FORMAT)
html_data   = TEMPLATE.safe_substitute(my_div_data)
open("out.html", "w").write(html_data)

如果您没有太大的 HTML 文件要生成,请试一试。如果您决定使用图书馆,则可以节省您需要做的学习。

于 2010-10-08T18:44:26.500 回答
2

ElementTree 可以生成有一些限制的 html。我会这样写:

from xml.etree.ElementTree import ElementTree, Element, SubElement
import sys 

html = Element('html')

head = SubElement(html, 'head')
style = SubElement(head, 'link')
style.attrib = {'rel': 'stylesheet', 'href': 'style.css', 'type': 'text/css'}
body = SubElement(html, 'body')

para = SubElement(body, 'p')
para.text = 'Lorem ipsum sit amet'

doc = ElementTree(html)
doc.write(sys.stdout)

对于中等复杂的 html,我会坚持使用一些模板引擎:Jinja2、Mako、Cheetah,仅举几例。

于 2010-10-08T19:03:57.570 回答
1

我建议看看shpaml

于 2010-10-08T16:52:58.977 回答