Python写静态HTML

html-css014

Python写静态HTML,第1张

因为近期工作需要,常常要将测试结果/数据统计、汇总和展示,因此会有写静态HTML的需求,本文记录下python写静态HTML的小技巧

灵感时来源于unittest测试框架最常用的报告插件: HTMLTestRunner ,该插件本身基于python2且已经更新了,好在 @虫师 一直在维护和更新这个插件,使得它能继续被大家所使用,了解详情请移步: SeldomQA/HTMLTestRunner

回到HTMLTestRunner报告插件,阅读源码发现,作者只用了一个python文件便巧妙的将写HTML、页面绘制和数据嵌入搞定了。进一步分析可以看到,作者先是在Template基类中定义了测试报告的HTML结构模板和各个模块/表格模板,然后再以格式化输入的形式给每一个模板中填充目标数据,再将填充好的模板以格式化输入的形式填充到HTML结构模板中,最后再将所有内容写成一个HTML文件即可。

可以看到,这样的设计其实优点在于非常小巧和轻量,缺点在于可维护和可移植性差,数据量小还尚可,不太适合大量数据的统计和绘制。

这种设计的关键在于建模板,然后 按需 填充数据,最后再写HTML,通常我的做法是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<title>溅</title>

<style>

<!--

body {

background:url(img/bg9.gif)

margin:0px

padding:0px

}

.pic{

border:1px solid #00406c

}

p {

padding-top:30px

color:#001671

}

p.con{

padding-left:4px

padding-right:4px

}

p.title {

paddin-top0px

}

.chara1 {

font-size:12px

background-color:#90bcff

}

.chara1 td{

text-align:center

}

.chara2 {

background-color:#d2e7ff

text-align:center

font-size:12px

vertical-align:top

}

.chara3 {

background:#e9fbff url(img/self.jpg) no-repeat bottom right

vertical-align:top

padding-top:15px

padding-left:30px

font-size:12pxpadding-right:15px

}

-->

</style>

</head>

<body>

<table align="center" cellpadding="1" cellspacing="0">

<tr><td><img src="img/banner3.jpg" border="0" /></td></tr>

</table>

<table width="600px" cellpadding="2" cellspacing="2" class="chara1" align="center">

<tr><td>首面</td><td>心情日记</td><td>Free</td><td>一起走到</td><td>从明天起</td><td>纸飞机</td><td>下一站</td></tr>

</table>

<table width="600px" align="center" cellpadding="0" cellspacing="1">

<tr>

<td width="150px" class="chara2"><p><img src="img/selfpic.jpg" class="pic"/><br />我的日记本</p>

<p class="con">他们彼此深信,是瞬间并发的热情让他们相遇。这样的确定是美丽的,但变幻无常更为美丽。</p>

<p><img src="img/selfpic2.jpg" class="pic"/><br/>心情轨迹</p>

<p class="con">董事长的一切都让人既羡慕又忌妒,但更让人受不了的是,有一天,上苍忽然赐给他一个神奇的礼物</p> </td>

<td class="chara3">

<h4>介绍</h4>

<p>我努力的抓紧世界,最后却仍被世界淘汰,如果一开始就松手,我会不那么伤心吗?你说,亲爱的孩子,世事难料,随它去吧!</p>

<h4>照相本子</h4>

<p>关于童年,你记住了什么? <br>

两岁时,我拥有一只巨大的粉红猪,它总在我嚎啕大哭时逗我笑。<br>

三岁时,我骑着小木马一路摇到外婆家,它不喝水也不吃草。<br>

四岁时,我离家出走,在公车上睡着了,最后是太空超人送我回家。<br>

我真的没骗你,我通通都记得,还有照片为证。

</p>

<h4>地下铁</h4>

<p>天使在地下铁的入口,<br>

和我说再见的那一年,<br>

我渐渐看不见了。<br>

十五岁生日的那年秋天早晨,<br>

窗外下着毛毛雨,<br>

我喂好我的猫。<br>

六点零五分,<br>

我走进地下铁。</p>

<h4>向左走向右走</h4>

<p>They're both convinced<br>

that a sudden passion joined them.<br>

Such certainth is beautiful,<br>

but uncertainty is more beautiful still.</p>

<br>

</td>

</tr>

</table>

</body>

</html>