使用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 Android api29如何在安装时自动在主屏幕上添加应用程序图标?   如何存储到MongoDB数据库中并使用Java从同一MongoDB数据库读取/加载?   java如何在不延迟界面的情况下延迟gui的操作?   Hibernate中空引用的java查询处理   java Hibernate无效的配置映射   用协变类型wrt变量重写java   java JBoss Envers多通审计   swing如何分发JavaGUI构建器项目   链表在Java中如何通过LinkedList搜索具有特定变量的对象?   java如何使用JDBC更新整数?   java Spring DispatchServlet在Jetty中找不到资源   反射如何在Java中跟踪方法结果   java关于接口的一般问题   java如何从xml报告生成cobertura html报告   java组织。springframework。豆。工厂BeanCreationException:无法自动关联字段:私有组织。冬眠会话工厂   java RealmMigration删除了我所在领域的所有数据   在java中将json数据字符串转换为字典数组   java最简单的设置并忘记存储简单JSON结构的分布式数据库?