跳转到主要内容

基于Genshi语法和Jinja块的快速XML模板引擎

项目描述

Kajiki 提供快速有效的 XML 模板

由于 Kajiki 的输入是 XML,它可以确保您的 HTML/XML 输出是有效的。基于 XML 属性或标签的 Genshi-like 语法简单美观,易于被网页设计师理解(或忽略)。但与 Genshi 相比,Kajiki 将模板编译为 Python 代码,以惊人的速度渲染,因此 Kajiki 可以与 JinjaMakoChameleon 等其他工具的速度相媲美。此外,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>

变更日志

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:withpy: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:casepy:else 语句之外的所有内容,因此现在当语句具有其他内容时,将正确地报告错误。

  • py:else 现在将正确检测在 py:ifpy: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]

项目详情


下载文件

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

源分发

kajiki-0.9.2.tar.gz (159.4 kB 查看散列)

上传时间

构建分发

kajiki-0.9.2-py3-none-any.whl (39.1 kB 查看散列)

上传时间 Python 3

由以下组织支持