我怎么使用genshi.建设者编程方式建立一个HTML文档?
题
我最近发现的genshi.生成器模块。这让我想起我的Divmod Nevow斯坦的模块。如何将一个使用genshi.建设者。标记,以建立一个HTML文档与特定doctype?或是这甚至是一个好事情吗?如果不是,什么是的 右 方式?
解决方案
这是不可能建立一个完整的网页,使用只是 genshi.builder.tag
-你会需要执行有些手术的所得的流入doctype.此外,产生的代码看起来可怕的。建议的方式使用Genshi是使用一个单独的模板文件,产生一个流离它,然后呈现,流的输出类型。
genshi.builder.tag
主要是有用的,当你需要生成简单的标记内蟒蛇,比如当你建设的一种形式或做某种逻辑-重修改的产出。
请参阅文件:
如果你真的想要产生一个完整的文件使用的只有 builder.tag
, 这(完全未经测试)的代码可能是一个很好的起点:
from itertools import chain
from genshi.core import DOCTYPE, Stream
from genshi.output import DocType
from genshi.builder import tag as t
# Build the page using `genshi.builder.tag`
page = t.html (t.head (t.title ("Hello world!")), t.body (t.div ("Body text")))
# Convert the page element into a stream
stream = page.generate ()
# Chain the page stream with a stream containing only an HTML4 doctype declaration
stream = Stream (chain ([(DOCTYPE, DocType.get ('html4'), None)], stream))
# Convert the stream to text using the "html" renderer (could also be xml, xhtml, text, etc)
text = stream.render ('html')
得到的页面会有任何空白在这-这会看起来正常的,但是你会有一个艰苦的时间阅读的源代码,因为它将完全在线之一。实施适当的过滤器来增加空白留给读者。
其他提示
Genshi.builder用于“以编程方式生成标记流”[1]。我相信它的目的是作为模板语言的后端。您可能正在寻找用于生成整页的模板语言。
但是,您可以执行以下操作:
>>> import genshi.output
>>> genshi.output.DocType('html')
('html', '-//W3C//DTD HTML 4.01//EN', 'http://www.w3.org/TR/html4/strict.dtd')
请在此处查看其他文档: http:// genshi。 edgewall.org/wiki/ApiDocs/genshi.output#genshi.output:DocType
[1] genshi.builder.__doc__
不隶属于 StackOverflow