基于Genshi语法和Jinja块的快速XML模板引擎
项目描述
Kajiki 提供快速有效的 XML 模板
由于 Kajiki 的输入是 XML,它可以确保您的 HTML/XML 输出是有效的。基于 XML 属性或标签的 Genshi-like 语法简单美观,易于被网页设计师理解(或忽略)。但与 Genshi 相比,Kajiki 将模板编译为 Python 代码,以惊人的速度渲染,因此 Kajiki 可以与 Jinja、Mako、Chameleon 等其他工具的速度相媲美。此外,Genshi 的一个缺点——py:match——被块取代,这些块的工作方式类似于 Jinja 的块。
通过结合最优秀的想法——XML 输入、Genshi 的语法和功能、Jinja 的模板继承以及最终编译为 Python——Kajiki 准备成为 Python 中最广泛使用的网页开发模板引擎。更多功能即将推出,敬请期待!
示例
>>> import kajiki
>>> Template = kajiki.XMLTemplate('''<html>
...     <head><title>$title</title></head>
...     <body>
...         <h1>$title</h1>
...         <ul>
...             <li py:for="x in range(repetitions)">$title</li>
...         </ul>
...     </body>
... </html>''')
>>> print(Template(dict(title='Kajiki is teh awesome!', repetitions=3)).render())
<html>
    <head><title>Kajiki is teh awesome!</title></head>
    <body>
        <h1>Kajiki is teh awesome!</h1>
        <ul>
            <li>Kajiki is teh awesome!</li><li>Kajiki is teh awesome!</li><li>Kajiki is teh awesome!</li>
        </ul>
    </body>
</html>链接
Kajiki 采用类似 MIT 的许可证。
git 仓库和问题跟踪器位于 GitHub。之前该项目使用 SourceForge 作为 hg 仓库、问题跟踪器和论坛。
变更日志
0.9.2 (2022-11-24)
- Python 3.11 兼容性。 
- 文档更新和说明。 
- 单元测试更新。 
0.9.1 (2022-04-20)
- 修复了 Python 3.11 alpha 的兼容性问题。 
- 单元测试已从 kajiki 包中移出:测试现在位于 tests/ 目录下。 
- 从 Travis CI 迁移到 GitHub Actions。 
0.9.0 (2021-11-29)
- 停止支持 Python 2.7。 
- 修复了 Python 3.6+ 中的 lnotab 错误(ERROR LOOKING UP LINE 消息)。 
- 在 <?xml ...?> 声明之前不再插入 DTD。 
- 删除对 nine 的依赖。 
- 删除对 TurboGears 1 的集成。 
- 改进了端到端测试。 
0.8.3 (2021-06-18)
- 修复了 Python 3.10 的兼容性问题 
- 将测试运行器切换到 pytest 
- 添加了 kajiki 命令行界面 
- 文档中的错别字纠正 
0.8.2 (2019-11-26)
- 修复了一些 HTML 实体无法正确识别的问题 
0.8.1 (2019-10-20)
- 修复了在包含模板时出现意外的 <DOCTYPE> 的问题 
0.8.0 (2019-06-03)
- 修复了对 Python 3.8 的支持 
- 停止支持 Python 2.6 和 3.3 
0.7.2 (2018-04-16)
- 改进了对 ${} 表达式的解析,并修复了花括号表达式中的语法错误报告。 
- 改进了对根元素之前具有注释的文档的解析 
0.7.1 (2017-09-11)
- 允许通过在模板上下文中提供或通过 Loader 中的 base_globals 来替换 gettext 函数 
0.7.0 (2017-06-27)
- 对于 i18n 的文本,现在将忽略文本周围的空格。出于性能原因,空文本始终被视为不可翻译节点。 
- extract_python 选项现在在提取翻译文本时报告语法错误。 
0.6.3 (2017-05-25)
- 向 babel 消息提取器添加了 extract_python 选项,这允许在 ${} 表达式中提取 gettext 调用 
0.6.1 (2016-11-28)
- 实际上在 kajiki/version.py 中报告了 0.6 
- 在加载器中公开 strip_text 选项 
0.6.0 (2016-11-27)
- 修复了错误地提到 py:with 的 py:switch 错误信息 
- 支持多行 ${} 表达式 
- 后续的文本节点现在被压缩成单个文本节点。这允许翻译整个段落而不是单个句子。 
- 允许在标签属性内使用代码和函数调用 
- 将 strip_text 选项添加到 XMLTemplate 和 i18n 收集器中,以确保文本节点去除前导和尾随空格(也导致最小化 HTML) 
- 现在会发出不需要关闭但通常被认为是最佳实践的结束标签的一些 HTML 节点(例如:<p>) 
- 通常改进代码文档,以降低贡献者的入门门槛 
0.5.5 (2016-06-08)
- py:attrs 现在将发出属性名本身,或者在没有为 'checked'、'disabled'、'readonly'、'multiple'、'selected'、'nohref'、'ismap'、'declare' 和 'defer' 设置布尔值时完全省略属性 
0.5.4 (2016-06-04)
- py:switch 现在正确支持多个 py:case 语句。 
- 不再收集 <script> 和 <style> 标签内的文本进行翻译。 
- 在存在标记或 Python 语法错误时,现在会报告行号和周围代码的语法错误。 
- 由于 py:swtich 丢弃除了 py:case 和 py:else 语句之外的所有内容,因此现在当语句具有其他内容时,将正确地报告错误。 
- py:else 现在将正确检测在 py:if 和 py:else 之间的虚假内容,因为这两个必须相继出现。 
- 改进了核心类的代码文档。 
0.5.3 (2016-01-25)
- py:with 语句现在保持变量的顺序,因此变量可以相互依赖。 
- 除非您想使用消息提取器,否则 Babel 不再是依赖项。 
0.5.2 (2015-10-13)
- 现在只为非空字符串生成 TranslatableTextNodes 
- py:with 语句现在接受由分号分隔的多个变量 
- Babel 消息提取器在 Python2 上修复 
0.5.1 (2015-07-26)
- 修复了 PyPy 上的崩溃 
0.5.0 (2015-07-25)
- 现在正确保留用户创建的 CDATA 部分 
- cdata_scripts=False 选项在 XMLTemplate 中允许禁用脚本和样式标签的自动 CDATA 
- Autoblocks 实验性功能会自动从指定的标签名称创建块。 
0.4.4 (2013-09-07)
- 现在可以接受 “$.” 而不会出错。事实上,可以接受任何内容。 
- 添加了 TurboGears 1 的集成插件 
0.4.3 (2013-08-12)
- 现在可以接受 “$(” 而不会出错。更容易编写 jQuery 代码。 
0.4.2 (2013-08-01)
- FileLoader 中存在一个阻止程序运行的回归。修复 #1 
0.4.0 (2013-07-29)
- 使用 nine 库在单个代码库中支持 Python 版本 2.6、2.7、3.2 和 3.3 
- 输入模板现在支持 HTML 实体以及 XML 实体。 
- py:include 修复,可以查看全局变量。 
- Genshi 兼容性:支持内置函数:defined()、value_of() 和 Markup()。 
- py:def:如果函数没有内容,则不会崩溃。 
- py:strip='' 与 py:strip='True' 相同。 
- 正确性:转义 HTML 属性值。 
- 正确性:始终关闭脚本标签,即使在 XML 模式下也是如此。 
- 添加了 Pyramid 网络框架的集成模块。 
- 给 FileLoader 一个 path,而不是仅仅是一个基本 directory。 
- 文档改进,包括需要编写 CDATA 部分。 
- 从 Sourceforge 移动到 Github。 
- 使用 Travis 进行持续集成。 
- 整个代码库按照 PEP8 进行格式化。 
0.3.5 (2012-05-07)
- 几个错误修复 
- 按字母顺序输出HTML属性(以提高可测试性) 
0.3.4 (2011-06-01)
- 使Kajiki在Python 2.4上运行 
0.3.2 (2010-11-26)
- 修复Python 2.5语法错误 
0.3.1 (2010-11-24)
- 添加对py:with的支持 
- 删除导致pip/easy_install出错的未使用babel导入 
- Python 2.5修复 
- 正确删除None属性和表达式 
- 在文本模板中关闭自动转义 
0.3 (2010-10-10)
- 添加i18n支持 
- 修复了几个错误:[#7],[#9],[#10] 
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。