python html模板_Tempy-纯Python语法的HTML模板库

Tempy是一个纯Python语法的HTML模板库,它允许动态生成HTML并使用Python或jQuery风格进行DOM操作。无需解析,其简洁的结构使得性能出色。Tempy对比传统模板系统如jinja2和Mako,运行速度更快。示例展示了如何创建、修改和定位HTML元素。
摘要由CSDN通过智能技术生成

Tempy-高效的面向对象HTML模板

tempy是什么?

没有写一个标签就能创建HTML。tempy动态生成HTML,并且能用python或jQuery风格访问。对DOM定位或操作可以使用python或jQuery风格操作

为什么使用tempy?

HTML代码中的使用Python语法,这样的模板系统是不错,但还不够酷(你还得用某种方法编写HTML)。Tempy就是为此而生的。

特性

没不用解析、简单的结构使得Tempy运行飞快。Tempy只是将HTML标签加在您的数据旁,实际上HTML字符串只存在在渲染时。

Tempy的性能

根据呈现内容的复杂性、页面上动态内容的数量、生成的输出的大小以及许多其他因素,性能有很大的不同。

Tempy没有解析字符串,不使用正则表达式和不加载html文件,相比传统的如jinja2和Mako框架,运行速度更快。

Used HW: 2010 IMac, CPU:2,8 GHz Intel Core i7 RAM:16 GB 1067 MHz DDR3 Osx: 10.12.6. Benchmark made using WRK

Running 20s test @ http://127.0.0.1:8888/tempy + http://127.0.0.1:8888/j2 10 threads and 200 connections

216153913_1_20210223023120912_wm

用例

一、基本模板from tempy.tags import Html, Head, Body, Meta, Link, Div, P, A

my_text_list = ['This is foo', 'This is Bar', 'Have you met my friend Baz?']another_list = ['Lorem ipsum ', 'dolor sit amet, ', 'consectetur adipiscing elit']#生成标签对象page = Html()(

# 在父标签html内插入head

Head()(

# 在父标签head内插入meta和link

Meta(charset='utf-8'),

Link(href="my.css", typ="text/css", rel="stylesheet")

),

body=Body()(

# 给标签名字和属性,以便于DOM操作

Div(klass='linkBox')(

A(href='www.foo.com')

),

(P()(text) for text in my_text_list)  # 标签内插入可迭代对象))print(page.render())

This is foo

This is Bar

Have you met my friend Baz?

二、元素的创建和移除

通过实例标签来创建DOM元素page = Html()

调用函数来增加元素或内容page(Head())

使用 jQuery风格操作DOMbody = Body()page.append(body)

div = Div().append_to(body)
This is some content
And some Other

同理,移除元素如下head.remove()

三、标签属性

定义标签时或创建标签后,对每个标签添加属性div = Div(id='my_html_id', klass='someHtmlClass')

text of this link

也可使用jQuery风格编辑标签属性div2.css(width='100px', float='left')div2.css({'height': '100em'})div2.css('background-color', 'blue')

四、DOM定位

每个tempy标签内容都是可迭代对象,性质就像python的列表divs = [Div(id=div, klass='inner') for div in range(10)]ps = (P() for _ in range(10))container_div = Div()(divs)for i, div in enumerate(container_div):

div.attr(id='divId'+str(i))container_div[0].append(ps)container_div[0][4].attr(id='pId')

在容器中访问元素,就像它们是属性一样。container_div = Div()container_div(content_div=Div())container_div.content_div('Some content')

Some content

如果你觉得你会用jQuery风格:container_div.children()container_div.first()container_div.last()container_div.next()container_div.prev()container_div.prev_all()container_div.parent()container_div.slice()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值