问题描述
在 python 中,最优雅的方法是生成 HTML 文档。我目前手动将所有标签附加到一个巨大的字符串,并将其写入一个文件。有更优雅的做法吗?
最佳解决办法
我建议使用可用于 python 的许多模板语言之一,例如一个 built into Django(您不必使用其余的 Django 来使用其模板引擎) – 一个谷歌查询应该给你很多其他替代模板实现。
我发现,学习模板库有很多方面的帮助 – 无论何时需要生成 e-mail,HTML 页面,文本文件或类似文件,您只需编写一个模板,将其加载到模板库中,然后让模板代码创建完成产品。
这里有一些简单的代码让你开始:
#!/usr/bin/env python
from django.template import Template, Context
from django.conf import settings
settings.configure() # We have to do this to use django templates standalone - see
# http://stackoverflow.com/questions/98135/how-do-i-use-django-templates-without-the-rest-of-django
# Our template. Could just as easily be stored in a separate file
template = """
<html>
<head>
<title>Template {{ title }}</title>
</head>
<body>
Body with {{ mystring }}.
</body>
</html>
"""
t = Template(template)
c = Context({"title": "title from code",
"mystring":"string from code"})
print t.render(c)
如果您在磁盘上有模板,请查看 render_to_string 函数,从而可以从预定义的搜索路径列表中加载模板,并从字符串中填充数据并将其渲染为字符串,这一切都在一个函数调用中。
次佳解决办法
我发现 yattag 是最优雅的做法。
from yattag import Doc
doc, tag, text = Doc().tagtext()
with tag('html'):
with tag('body'):
with tag('p', id = 'main'):
text('some text')
with tag('a', href='/my-url'):
text('some link')
result = doc.getvalue()
它看起来像 html,附加的好处,你不必关闭标签。
第三种解决办法
我建议使用 xml.dom 来做到这一点。
http://docs.python.org/library/xml.dom.html
阅读本手册页,它具有构建 XML(因此 XHTML) 的方法。它使所有 XML 任务更容易,包括添加子节点,文档类型,添加属性,创建文本节点。这应该能够帮助您绝大多数您将要创建的 HTML 。
它也对分析和处理现有的 xml 文档非常有用。
希望这可以帮助
P.S
这是一个教程,可以帮助您应用语法
http://www.postneo.com/projects/pyxml/
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。