dominate是一个python库,用于使用优雅的dom api创建和操作html文档。

dominate的Python项目详细描述


支配

dominate是一个python库,用于使用优雅的dom api创建和操作html文档。 它允许您用纯python非常简洁地编写html页面,从而消除了学习另一种模板语言的需要,并允许您利用python更强大的功能。

python version构建状态coverage status/P>

巨蟒:

importdominatefromdominate.tagsimport*doc=dominate.document(title='Dominate your HTML')withdoc.head:link(rel='stylesheet',href='style.css')script(type='text/javascript',src='script.js')withdoc:withdiv(id='header').add(ol()):foriin['home','about','contact']:li(a(i.title(),href='/%s.html'%i))withdiv():attr(cls='body')p('Lorem ipsum..')print(doc)

输出:

<!DOCTYPE html><html><head><title>Dominate your HTML</title><linkhref="style.css"rel="stylesheet"><scriptsrc="script.js"type="text/javascript"></script></head><body><divid="header"><ol><li><ahref="/home.html">Home</a></li><li><ahref="/about.html">About</a></li><li><ahref="/contact.html">Contact</a></li></ol></div><divclass="body"><p>Lorem ipsum..</p></div></body></html>

安装

建议安装dominate的方法是 pip

sudo pip install dominate

pypi versionpypi downloads

Git存储库位于 github.com/knio/dominate

示例

所有示例都假设您已经导入了适当的标记或整个标记集:

fromdominate.tagsimport*

你好,世界!

dominate的最基本特性为每个html元素公开一个类,其中构造函数 接受子元素、文本或关键字属性。dominate节点返回其html表示 从\u str\uu\u unicode\uurender()方法。

print(html(body(h1('Hello, World!'))))
<html><body><h1>Hello, World!</h1></body></html>

属性

dominate还可以使用关键字参数将属性附加到标记上。大多数属性都是HTML规范的直接副本,有一些变体。

对于与python的保留关键字冲突的属性classfor可以使用以下别名:

<表><广告>类 < < / > >< /广告><正文>类对于 CLS FR类名htmlf或类名用于
test=label(cls='classname anothername',fr='someinput')print(test)
<labelclass="classname anothername"for="someinput"></label>

使用data获取自定义的html5数据属性

test=div(data_employee='101011')print(test)
importdominatefromdominate.tagsimport*doc=dominate.document(title='Dominate your HTML')withdoc.head:link(rel='stylesheet',href='style.css')script(type='text/javascript',src='script.js')withdoc:withdiv(id='header').add(ol()):foriin['home','about','contact']:li(a(i.title(),href='/%s.html'%i))withdiv():attr(cls='body')p('Lorem ipsum..')print(doc)
0

您还可以通过类似字典的界面修改标记的属性:

α、α、α十一 是啊。

复杂结构

通过使用+=运算符和.add()方法,您可以轻松创建更高级的结构。

创建一个简单列表:

啊!13! AAAAAAA H14

支配支持iterables以帮助简化代码:

是啊。 啊!

一个简单的文档树:

啊! AAAAAAA 18

对于干净代码,.add()方法返回元组中的子级。上面的示例可以这样清理和展开:

啊! AAAAAAA H20

您可以通过类似字典的界面修改标记的属性:

YYY11 是啊。

或者通过数组行接口标记的子项:

AAAAAAAAA 23 啊!

也可以使用对象创建注释!

AAAAAH25 啊! 是啊。 AAAAAAAAA 28

渲染

默认情况下,render()尝试使用一个html使所有输出可读 每行元素和两个缩进空间。

此行为可以由uu pretty控制(默认:true除了 创建元素时的某些元素类型,如pre)属性,以及 pretty(默认值:true)、indent(默认值:)和xhtml(默认值:falserender()的参数。渲染选项传播到所有子节点。

AAAAAAA 29 AAAAAAA 30 啊! 啊! 是啊。 啊! 啊! 啊! AAAAAAA 37 AAAAAAAAA 38

上下文管理器

您还可以使用python的语句添加子元素:

啊! 啊!

您可以将此机制与添加子元素的其他机制一起使用,包括使用语句嵌套,它可以按预期工作:

AAAAAAA 41 AAAAAAA 42

当上下文关闭时,任何尚未添加到内容的节点都将添加到当前上下文。

属性可以通过attr函数添加到当前上下文中:

啊! 是啊。

文本节点可以通过dominate.util.text函数添加:

啊!45! 啊!

装饰工

dominate非常适合为页面的某些部分创建大型小部件。考虑这个例子:

啊! AAAAAAA 48

您可以看到下面的模式在这里重复:

AAAAAAA 49

使用标记(对象和实例)作为装饰可以避免这个样板文件

啊! 啊!

修饰后的函数将返回用于修饰它的标记的新实例,并在中使用上下文执行,该上下文将收集在其中创建的所有节点。

如果需要向小部件的根节点添加属性或其他数据,也可以使用标记实例作为装饰器。 对修饰函数的每次调用都将返回用于修饰它的节点的副本。

AAAAAAA 52 次级方案53

创建文档

由于每次创建html文档的公共结构都会非常繁琐,dominate提供了一个类来为您创建和管理它们:document

创建新文档时,将为您创建基本的HTML标记结构。

啊! 啊!

文档类接受标题文档类型请求关键字参数。 这些参数的默认值是dominate<;!doctype html>;,和none

文档类还提供帮助程序,允许您直接访问标题标题、以及正文节点。

啊! 啊!

文档类还提供帮助程序,允许您直接向正文标记添加节点。

AAAAAAA 58 啊!

嵌入HTML

如果需要嵌入来自库(如markdown等)的预定义HTML节点,可以使用dominate.util包中的raw方法避免转义HTML:

<html><body><h1>Hello, World!</h1></body></html>
0

如果没有原始调用,此代码将使用lt等呈现转义的html。

SVG

dominate.svg模块包含svg标记,类似于dominate.tags如何包含html标记。SVG元素将自动将虚线元素的\code>转换为-。例如:

<html><body><h1>Hello, World!</h1></body></html>
1
<html><body><h1>Hello, World!</h1></body></html>
2

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将POJO映射到应用程序/xwwForMurlen,并使用自定义表单键进行编码   存储过程中分页的java策略(视图还是?)   java无法使用SpringWebSocket将客户端连接到服务器   使用Jdom从java创建xml   Java Swing验证?   运行游戏应用程序时出现java空指针异常错误   json Java REST客户端将curl代码重写为Java代码   maven无法安装某些JAVA环境问题   安卓中通过json的java本地镜像   JavaEclipse在没有文件的Antlr生成的代码目录上显示警告,但在其子目录上不显示警告   PHP的Java包(“N”,$str)   java在使用criteriaquery fetch和createcriteria方面的差异。setFechMode   java计算工作时间和现金   java将项目添加到文本文件   java客户端生成器。运行maven build时,JDK 9+不支持sslSocketFactory(sslSocketFactory)   使用远程WSDL生成存根的java需要使用SSL证书的用户名和密码?   Java中的串行转换器   java Maven POM配置和Tomcat共享/库依赖