使用python eval,string.template快速生成文本。

uftlib的Python项目详细描述


这个项目提供了一个允许非常灵活和快速的模板渲染而牺牲安全性的库。 它使用python代码生成变量,然后在string.template中替换这些变量。

示例

下面是一个基本示例:

fromuftlibimportUFTemplateinitial="""import datetime
def f(x):
    return x*x

def getnow():
    return str(datetime.datetime.now())

a = 0
b = 100
i = 0"""oncycle="""a += 3
i += 1
s = f(i)
b += a
now = getnow()"""template="""Now = ${now}
Render nr. ${i}
f(${i}) = ${s}
b = ${b}
We live in ${where}"""tpl=UFTemplate(initial,oncycle,template,where="Indonezia")fortextintpl.render_many(1):print(text)

我们应该得到以下输出:

Now = 2015-08-25 16:09:07.015948
Render nr. 1
f(1) = 1
b = 103
We live in Indonezia

我们可以将模板重置为初始状态并获得相同的结果:

tpl.reset()fortextintpl.render_many(2):print(text)

您应该得到以下输出:

Now = 2015-08-25 16:09:07.016970
Render nr. 1
f(1) = 1
b = 103
We live in Indonezia
Now = 2015-08-25 16:09:07.017298
Render nr. 2
f(2) = 4
b = 109
We live in Indonezia

警告

您可以在初始部分放置任何类型的python代码,例如打开和读取web页面, 连接到数据库,读取和解析其他文件,但这是以牺牲安全性为代价的, 恶意代码将在与解释器相同的环境中运行。这是一个折衷方案 这对所有的项目和需求都不是有利的,所以请自费使用这个库。

柔韧性

三个必需的参数(initial、oncycle和template)可以存储在数据库中,并且 可以由网络中的多个程序检索,这些程序并行并分发任务。 大多数模板引擎在模板中存储一些逻辑,在代码中存储一些 调用模板呈现,导致大混乱。用uftlib切那个角。

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

推荐PyPI第三方库


热门话题
在缓存中找不到java元素可能页面在查找后发生了更改为什么?   java如何在springbootmicroservices项目中实现HATEOAS   java动态改变游戏从纵向到横向   java如何在jsp表单中插入验证码?   Thymeleaf中大表的java输出   java如何在没有包的情况下在windows上从命令行运行Junit测试?   随机数发生器中的java索引越界异常错误   RemoteException java。rmi。解组异常:解组返回时出错   无法在BIRT pdf中更改java字体类型   java为什么MongoDB maven依赖项不能与运行时作用域一起添加?   java查找数组的所有组合,并获取前k个和元素   iPad上的javawebstart   java监控进程的cpu和内存使用情况   java FreeTTS无音频linux ubuntu无错误   while循环之后的java代码永远不会执行