___|  _ \   |  |    |   |_ _|\ \     / ____|
 |     |   |  |  |    |   |  |  \ \   /  __|
 |   | |   | ___ __|  ___ |  |   \ \ /   |
\____|\___/     _|   _|  _|___|   \_/   _____| 

 --- A GOPHER-LIKE INTERFACE FOR HIVE BLOCKCHAIN ---

Python语言PyH模块生成HTML文档使用说明

BY: @brysj22952 | CREATED: Aug. 5, 2018, 7:22 a.m. | VOTES: 3 | PAYOUT: $0.00 | [ VOTE ]

补充一下:这是原创。如果转载,我会特别注明,这是道德。

Python语言PyH模块生成HTML文档使用说明

PyH是什么?

PyH是Python语言的一个模块(不是自带的),用于生成HTML文件。不错,它只能生成HTML,并不能解析它。

PyH的特点

它最大的特点是开源,并且源码很短小,只有不到200行。这样,如果你有什么不满意的,可以自己修改它。

源码地址:https://github.com/hanxiaomax/pyh

正如你看到的,一个中国人(很大可能是),对它进行了修改完善,支持了Unicode和Python3。别看这个工程有很多文件,其实只有一个《pyh.py》文件才是源码。

这个源码工程里面,自带了一个中文手册,为加深印象,我又重新总结了一份。

PyH的使用

Tag对象

Tag就是HTML标签,也称之为HTML元素,形如

生成Tag对象

python >>> mydiv = div() >>> mydiv.render() ' '

在这里,我要做一下评论,render函数不好,它打印了当前的tag对象,但是为什么不重载标准的__str__方法呢?这样可以减少记忆的负担。

通过看源码,其实render还有一个参数,可以写入到一个文件中,这样也不好,一个函数应该做单一的事情,应该把返回字符串和写字符串分开来。

于是,我重构了代码,实现了__str__函数,于是可以使用下面的函数打印tag的结果。

```
>>> from pyh import *
>>> a=div()
>>> print(a)

>>> str(a)
'
\n\n\n'
```

#### 设置Tag属性

有两种方式,一种是生成Tag对象时作为参数传递,另外一种是生成Tag对象后修改和设置其attributes属性,因为attributes是一个字典,存放的就是tag的属性,其key是属性的名字,value就是属性的值。但是有一点需要特别注意,对于class属性,其key为cl,原因也比较容易理解。

```python
>>> from pyh import *
>>> a=div(b='b',c='c')
>>> print(a)

```

```python
>>> from pyh import *
>>> a=div()
>>> a.attributes['b']='b'
>>> a.attributes['c']='c'
>>> print(a)

```

需要注意的是,key是一个字符串,作为参数不需要加上引号,但是使用属性需要加上引号。

设置tag的文本内容

同tag属性的设置一样,也有两种方法,一种是作为构造函数的参数传递,一种使用追加符号<<,如下面的示例。

```python
>>> from pyh import *
>>> a=div('a')
>>> print(a)

a

```

```python
>>> a=div()
>>> a<<'test'
>>> print(a)

test

```

设置tag的子元素

tag的子元素,也就是子tag,HTML的子标签。与设置tag的内容基本上是一样的,如下示例。

```python
>>> a=div(div('test1'),div('test2'))
>>> print(a)

test1

test2

```

```python
>>> a=div()
>>> a<>> a<>> print(a)

test1

test2

```

设置tag的兄弟元素

这里的说法有些不准确,应该是设置当前tag的相邻的下一个元素,使用+连接即可。如下示例。

&gt;&gt;&gt; a=div(id='a')+div(id='b')+div(id='c')
&gt;&gt;&gt; print(a)









访问子元素

这个小结无关紧要,是可选的,但有时也可能用得着,所以还是描述一下吧。之前讲述了如何给tag添加子元素,如果要获取子元素,可以使用子元素的ID,如果子元素没有设置ID,则使用tag_001等类似的字符串作为其ID,如下所示。

```python
>>> a=div(div(id='test'))
>>> print(a.test)

```

```python
>>> a=div(div(name='d1'),div(name='d2'))
>>> print(a.div)

>>> print(a.div_001)

```

使用PyH对象生成网页

上一章节讲述了核心的Tag对象,现在我们看看如何生成HTML网页。为什么放在Tag对象的后面来讲呢?因为PyH对象其实也是Tag对象,也不完全是,它继承自Tag对象。只不过增加了一些用于简化的特殊方法,其实没有这些方法也完全可以自己来生成。

生成网页框架

&gt;&gt;&gt; a=PyH()
&gt;&gt;&gt; print(a)



MyPyHPage





你会发现,这个网页框架少一个类似``的描述,我们可以重写实现,增加一个就好了。

总结

至此,就基本上就可以用它干活了。由于代码较短,我也做了一些小修改,上述的示例和代码库中的原始版本可能会有微小差异,应该影响也不大。

另外,我准备在写一篇文档,对源码进行分析,这样也方便后来者理解代码并修改完善它。

TAGS: [ #cn ] [ #python ] [ #pyh ] [ #html ]

Replies

NO REPLIES FOUND.

[ BACK TO TRENDING ] [ BACK TO MENU ]
CMD>