Python HTML生成器

29

我正在寻找一个易于实现的Python HTML生成器。我发现HTML.py,但是没有办法为表格添加CSS元素(id、class)。

9个回答

20

Dominate 是一个 HTML 生成库,可以让您轻松创建标签。在 dominate 中,Python 保留字前缀带有下划线,因此看起来像这样:

from dominate.tags import *
t = div(table(_id="the_table"), _class="tbl")
print(t)


<div class="tbl">
  <table id="the_table"></table>
</div>

免责声明:我是dominate的作者。

13

如果你想要通过编程而非模板生成HTML,则Karrigell的HTMLTags模块是一种可能的选择;它可以包含例如class属性(在Python中这将是一个保留字),技巧是将其首字母大写,即引用我刚给出的文档URL:

与Python关键字相同名称的属性(例如class、type)必须大写:

print DIV('bar', Class="title")  ==>  <DIV class="title">bar</DIV>

8
HTML生成通常使用Python的无数种HTML模板语言之一。个人喜欢Templess,但Genshi可能是最受欢迎的。有无数种选择,有一个list,很可能不完整。
否则,您可能希望使用lxml,在那里您可以以更具编程性的XML方式生成它。虽然我很难看到好处。

顺便提一下:Genshi是Trac使用的模板引擎。 - retracile

6

有 Robin Friedrich 老师的经典 HTMLGen,虽然很难找到但仍然可以在这里下载(版本是2001年的,但自那以来HTML并没有太多改变 ;-)。还有 xist。当然如 Lennart 的观点所述,现在生成HTML通常使用模板系统,比如JinjaMako


现在呢?Python模板化至少从DTML,1997年就开始了。 :) ZPT自2001年以来一直更好。 :) [只是挑刺] - Lennart Regebro

5
这是我编写的一个超级简单的HTML生成器。我在构建时使用它来生成HTML。如果在运行时生成HTML页面,则有更好的选择可用。
这是链接。

http://pypi.python.org/pypi/sphc

还有一个快速的例子

>> import sphw
>> tf = sphw.TagFactory()
>>> div = tf.DIV("Some Text here.", Class='content', id='foo')
>>> print(div)

<DIV Class="content", id="foo">Some Text here.</DIV>

4
实际上,您可以在HTML.py中的对象中添加任何属性,例如id和class(http://www.decalage.info/python/html)。
attribs是Table、TableRow和TableCell类的可选参数。它是一个字典,用于设置其他属性。例如,以下代码为表格设置了id和class:
import HTML
table_data = [
        ['Last name',   'First name',   'Age'],
        ['Smith',       'John',         30],
        ['Carpenter',   'Jack',         47],
        ['Johnson',     'Paul',         62],
    ]
htmlcode = HTML.table(table_data, 
    attribs={'id':'table1', 'class':'myclass'})
print htmlcode

相同的参数可用于TableRow和TableCell对象,以格式化行和单元格。目前尚不存在针对列的参数,但如果需要,应该很容易实现。


4

好的,这是另一个HTML生成器,或者我更喜欢把它看作编译器。

https://pypi.python.org/pypi/python-html-compiler

这是一组基础类,可用于定义标签和属性。因此,标签类具有属性和子元素。子元素本身是具有属性和子元素的标签类,以此类推。您还可以设置从根类开始并向上工作各个分支的参数。
这将允许您定义所有想要的标签类,从而能够创建自定义类并实现任何想要的标签或属性。
刚刚开始,如果有人想测试 :)

2

如果需要生成HTML或其他文本,Jinja是一个功能强大的模板引擎。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接