python的模板引擎抽象层

collective.templateengines的Python项目详细描述


templateengines是python的模板引擎抽象层。 它定义了用于与各种python模板引擎通信的通用zope接口。 以获得更高的代码重用价值

这个包还在开发中欢迎大家发表意见。

Features

collective.templateengines帮助您实现

  • 简单,可插拔,模板语言切换。只编写一次模板标记代码,并在所有模板引擎中使用它 使用抽象标签插件
  • 从模板引擎依赖项中清除代码库
  • 跨模板引擎的通用错误和警告报告机制
  • 来自PyPi存储库的EGG部署和轻松安装支持
  • 使用标准Zope interfaces包定义的接口
  • Django模板语言、Cheetah和Jinja2的后端
  • 单元测试

Motivation

所有的模板引擎都有其缺点。迟早你会想尝试另一个引擎, 或者其他人希望在项目中使用其他模板引擎。这个包裹 旨在尽可能平稳地过渡。

Installation

  • 安装collective.templateengines egg
  • 安装以下任何模板引擎蛋:django、jinja2、cheetah

Usage

请看一下collective.easytemplate包如何支持交换 在模板引擎和它们的注册标记之间

下面的示例演示如何通过一行更改在django和cheetah模板引擎之间切换。 当然,模板本身需要重构。

猎豹:

from collective.templateengines.backends import cheetah

engine = cheetah.Engine()
context = DictionaryContext({"foo":"bar"})
template, syntax_errors = engine.loadString("Show variable $foo", False)
result, evaluation_errors = template.evaluate(context)

Django公司:

from collective.templateengines.backends import djangotemplates

engine = djangotemplates.Engine()
context = DictionaryContext({"foo":"bar"})
template, syntax_errors = engine.loadString("Show variable {{ foo }}", False)
result, evaluation_errors = template.evaluate(context)

Tags

collective.template engine使用术语标记来引用可以在模板引擎上下文中使用的函数。 在未来,标记也将扩展到模板语言结构。

collective.templateengines没有现成的标签。要定义标记,我建议 您需要查看collective.easytemplate包。

  • 标记提供collective.templateengines.interfaces.itag interface
  • 使用engine.addTag()函数将标记注册到模板引擎。

Problems

  • Cheetah架构缺少单独的公开编译和评估阶段
  • cheetah默认情况下向模板公开完整的python名称空间,因此很难保护它
  • 猎豹不能遍历Zope函数或属性

Examples

python模板引擎用于

Changelog

0.3.5 (2013-05-07)

  • plone 4.3的首次导入 [范希姆]

0.3.2 - 0.3.4

  • 修复了上下文或HTTP请求为 不可用,或者在plone模板[miohtama]中是“特殊的”
  • 修复了与LinguaPlone[miohtama]的兼容性问题

0.3.1 - 0.3.2

  • 修复了原型访问器的Unicode问题
  • 文档清理
<分区 id="id4">

0.3.0 - 0.3.1

  • 修复了plone.py中原型模式字段有问题的问题

0.1.1 - 0.3.0

  • 重大返工

0.1 - 0.1.1

    固定PYPI部署问题< /LI>

0.1

  • 初始版本

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

推荐PyPI第三方库


热门话题
java为什么会出现这些错误?表达式的非法开始   使用HttpUrlConnection的java测试URL仅适用于前面的www   在大数据集上使用kmeans的java堆外内存   查找Java RandomAccessFile如何以字符形式读取第n个字节   java Android从BroadcastReceiver获取标题和描述   java使用构造函数参数模拟嵌套类并测试方法   正在将Azure Blob项强制转换为Java文件对象   java并行运行testNG套件   java程序在运行时似乎没有进入   贬低Java规则引擎的优点和缺点   文本区域中的java中心文本   java JPA从多个表中选择错误   类Java问题使用类加载器重新加载代码   java如何在Spring非管理类上使用@Value   java(关闭)Gradle导入VS代码失败   java arraylist拆分(“空白”)并计算字数   Android/Java如何在单独的*中调用函数。java文件?   具有基本身份验证的java Apache Camel RSS模块   java为什么程序在出现溢出或下溢时不抛出异常