跳转到主要内容

为Python提供的handlebars.js模板。

项目描述

版权(c)2012,Canonical Ltd

此程序是免费软件:您可以在自由软件基金会发布的GNU通用公共许可证的第3版及以后版本下重新分配和/或修改它。

此程序的分发是希望它会有用,但没有任何保证;甚至没有适销性或特定用途的隐含保证。有关详细信息,请参阅GNU通用公共许可证。

您应该已收到GNU通用公共许可证的副本。如果没有,请参阅 <https://gnu.ac.cn/licenses/>。GNU通用公共许可证版本3(请参阅文件LICENSE)。

pybars为Python提供了一个与handlebars.js兼容的模板系统。

依赖关系

测试依赖关系

使用方法

有关模板语言的详细信息,请参阅https://handlebars.node.org.cn/文档。

将引擎翻译成Python需要稍微不同的调用约定,与JS版本略有不同。

  • 块辅助函数接受(this, options, *args, **kwargs)

  • 其他辅助函数接受(this, *args, **kwargs)

  • 上下文中的闭包接受(this, *args, **kwargs)

模板如‘{{foo bar quux=1}}’将把bar作为位置参数传递,将quux作为关键字参数传递。关键字参数必须是Python中的非保留字。例如,作为关键字参数的‘print’将会失败。

具有字面布尔参数的模板,如‘{{foo true}}’,将根据需要将参数映射到Python的True或False。

为了提高效率,pybars不是传递字符串,而是传递一个list的子类('liststr'),该子类有一个__unicode__实现,返回u””。join(self)。模板辅助函数可以返回list、tuple、unicode或liststr实例。liststr的存在是为了避免在模板渲染过程中的字符串处理中的二次开销。同样,在内部循环中的辅助函数应该返回list或liststr,原因相同。

注意 liststr在js实现中取代了SafeString的位置:当返回liststr时,即使是在常规的{{}}扩展中也不会被转义。

JS实现中的'data'功能目前尚未移植,如果需要,很容易添加。类似地,stringParams功能也没有移植 - 在辅助函数调用中强制将任何内容转换为字符串。

典型用法

  • 获取编译器

    >>> from pybars import Compiler
    >>> compiler = Compiler()
    
  • 注册您需要的任何扩展

    >>> def _list(this, options, items):
    ...     result = [u'<ul>']
    ...     for thing in items:
    ...         result.append(u'<li>')
    ...         result.extend(options['fn'](thing))
    ...         result.append(u'</li>')
    ...     result.append(u'</ul>')
    ...     return result
    >>> compiler.register_helper(u'list', _list)
    
  • 然后编译您的模板

    >>> source = u"{{#list people}}{{firstName}} {{lastName}}{{/list}}"
    >>> template = compiler.compile(source)
    
  • 现在您可以渲染它

    >>> template({
    ...     'people': [
    ...         {'firstName': "Yehuda", 'lastName': "Katz"},
    ...         {'firstName': "Carl", 'lastName': "Lerche"},
    ...         {'firstName': "Alan", 'lastName': "Johnson"}
    ...    ]})
    <ul><li>Yehuda Katz</li><li>Carl Lerche</li><li>Alan Johnson</li></ul>
    

更多详细信息可以通过阅读API文档(例如pydoc pybars)找到。

安装

在具有所有依赖项的环境中运行setup.py,或将工作目录添加到您的PYTHONPATH中。

开发

上游开发发生在https://launchpad.net/pybars。要设置开发的工作区,如果依赖项不可立即获得,您可以使用./bootstrap.py创建bin/buildout,然后使用bin/py获取具有依赖项的Python解释器。

要运行测试,请使用您选择的运行器,测试套件是pybars.tests.test_suite。

例如

$ bin/py -m testtools.run pybars.tests.test_suite

pybars已启用testrepository,因此您只需执行

$ testr init $ testr run

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

pybars-0.0.4.tar.gz (18.0 kB 查看散列)

上传时间

由以下支持