非常轻量级、内存高效、无依赖项的模板引擎(编译到python源代码)。

utemplate的Python项目详细描述


下一步

utemplate是用于 python,主要用于pycopy,一种轻量级python 实现(https://github.com/pfalcon/pycopy)。

utemplate语法大致基于django/jinja2语法(例如 {% if %}{{var}}),但只提供最需要的功能 (例如,“filters”是函数调用的语法糖,并且 到目前为止还没有计划实施)。

utemplate将模板编译为python源代码,特别是 一种生成函数,经过迭代产生连续的 渲染模板的部分(子字符串)。这使得 模板替换期间的内存使用情况(使用pycopy,它将启动 只有几百字节)。生成的python代码可以导入为 为了方便起见,直接提供模块或简单的加载程序类。 还有一个loader类可以动态编译模板, 如果尚未编译(如果 已更改,这是待办事项)。

为了测试/管理模板,提供了utemplate_util.py工具。为了 例如,要快速尝试模板(假设您已经在 examples/目录:

micropython ../utemplate_util.py run squares.tpl

python3 ../utemplate_util.py run squares.tpl

模板可以采用参数(这就是动态内容的生成方式)。 模板参数作为参数传递给生成器函数 从模板生成。它们也可以通过utemplate_util.py 命令行(在本例中,参数将被视为字符串,但是 如果从代码调用,可以是任何类型:

micropython ../utemplate_util.py run test1.tpl foo bar

快速语法参考

计算python表达式,将其转换为字符串并输出到 渲染内容:

  • {{<expr>}}

其中expr是任意的python表达式-来自一个裸变量名, 对于函数调用,yield fromawait表达式。

支持的语句:

  • {% if %}{% elif %}{% else %}{% endif %}-通常的“if” 声明
  • {% for %}{% endfor %}-通常的“for”语句
  • {% while %}{% endwhile %}-通常的“while”语句
  • {% args var1, var2, ... %}-指定模板的参数
  • {% set var = expr %}-赋值语句
  • {% include "name.tpl" %}-静态地包括另一个模板
  • {% include {{name}} %}-动态包含名为 存储在变量name中。

命名约定

目前的惯例(将来可能会调整):

  • 模板的建议扩展名是.tpl,例如example.tpl
  • 编译模板时,其名称中的点(.)将被替换 附加下划线(_)和.py,例如example_tpl.py。它 因此可以使用import example_tpl导入。
  • 传递给{% include %}语句的名称应该是 具有扩展名的模板,例如{% include "example.tpl" %}
  • 对于include的动态形式,变量应该类似地包含 模板的全名,例如{% set name = "example.tpl" %}/ {% include {{name}} %}

示例

examples/squares.tpl如上所述,包含以下内容:

{% for i in range(5) %}
| {{i}} | {{"%2d" % i ** 2}} |
{% endfor %}

examples/目录中提供了更多示例。

如果您想看到使用utemplate的完整示例web应用程序, 请参阅https://github.com/pfalcon/notes-pico

许可证

utemplate由paul sokolovsky编写和维护。有空的 在麻省理工学院的执照下。

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

推荐PyPI第三方库


热门话题
在Java中使用工厂设计模式   解析服务器安全性的java最佳实践   java如何解决由于某种原因导致的执行失败?   关于Servlet的java   如何在java中生成一个大的(30MB+)xml文件?   匿名类重写与传递接口,用于在Java中设计回调   java jar从运行时开始。getRuntime()。exec()比从命令行运行的时间长   java Ant脚本排除文件夹(某些文件除外)   java在Windows 10计算机上运行时遇到Maven错误   java Hibernate在同一个表中级联   java PayPal API设置返回URL   java如何在选项卡的右侧显示关闭按钮   当按下Jmenu按钮时,使用java操作侦听器退出程序