代码之家  ›  专栏  ›  技术社区  ›  Rob Lourens

Python中的HTML生成

  •  0
  • Rob Lourens  · 技术社区  · 16 年前

    用Python快速创建简单HTML的最简单方法是什么?到目前为止,我所发现的都是用于HTML生成的复杂模板系统或类,其api似乎比我需要的要重得多。

    我可以自己把线粘在一起,但我想可能会有一个图书馆,可以节省我一点时间。

    编辑-我决定更仔细地看看Jinja2模板系统。它看起来在将来的某个时候可能会有用,而且看起来不会像我想的那样花那么多时间去弄清楚。

    4 回复  |  直到 16 年前
        1
  •  2
  •   Alex Martelli    16 年前

    quixote 是一个古老但仍然引人入胜的框架——它基本上“在Python中嵌入HTML”(而不是像所有流行的模板系统那样,反之亦然)。

    一个简单的例子 the overview :

    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中,这些字符串中的第一个将是docstring,其他字符串将被忽略,而 [html] 部分是语法错误。在 Quixote [html格式] .ptl ,但他们仍然可以 import 从Python中提取字符串并输出这些字符串。

    我怀疑你想领养 吉诃德 与现代Python模板化方法相比,IMHO更喜欢这种方法,但它确实有助于阅读有趣的内容。

    沿着类似的路线走得更远的是 nevow 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 如今,人们通常更倾向于使用这种方法——我想,主要的实际原因是,与wrt提供的“在Python中嵌入HTML/XML”方法相比,它们更好地将表示逻辑(在模板中)与其他层(在Python代码中)分离开来。

        2
  •  1
  •   tobiw    16 年前

    http://markup.sourceforge.net/

    编辑:下面是另一个看起来非常相似的模块: http://www.decalage.info/en/python/html

        3
  •  1
  •   S.Lott    16 年前

    Python string.Template可以执行您想要的操作。而且它是内置的。

    http://docs.python.org/library/string.html#template-strings

    如果没有进一步的定义或示例,我无法理解“似乎更重的api”。

        4
  •  0
  •   Ignacio Vazquez-Abrams    16 年前

    如果你在寻找基本的和裸露的骨头,那么古代的 HTMLgen 就行了。否则,请使用模板引擎。