基于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]
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。