跳转到主要内容

Pyramid视图层

项目描述

pyramid_layer

https://secure.travis-ci.org/fafhrd91/pyramid_layer.png

pyramid_layer 允许使用两个参数,类别和名称来地址模板。同时,对于每一层,也可以使用一组目录,在这种情况下,pyramid_layer 将在每个目录中搜索模板。它允许在不更改代码的情况下覆盖模板。例如,表单库可以定义层 field

>> ls ./fields/
.. bool.pt
.. file.pt
...
.. textarea.pt

在您的应用程序中,您可以通过为 field 类别定义新的层来覆盖这些模板中的任何一个

>> ls ./myproject/fields/
.. bool.pt

通常,顶级目录是一个类别,目录中的文件是模板。例如,‘form:view.lt’

`form` - layer category
`view` - template name
`.lt`  - custom pyramid renderer factory

可以使用 add_layer 配置指令来定义层

>> config = Configurator()
.. config.include('pyramid_layer')
..
.. config.add_layer('form', path='./path_to_form_dirctory/form/')

form 目录可以包含任何模板

>> ./form/
..   view.pt
..   actions.jinja2

可以将这些模板中的任何一个用作 pyramid 渲染器路径

>> config.add_view(
..     name='view.html',
..     renderer='form:view.lt')

或者

>> config.add_view(
..     name='actions.html',
..     renderer='form:actions.lt')

可以在渲染模板之前运行 Python 代码。有 add_tmpl_filter 指令和 pyramid_layer.tmpl_filter 装饰器

>> def form_actions(context, request):
..     return {'url': ...}

>> config.add_tmpl_filter('form:actions', form_action, name='custom')

或者

>> import pyramid_layer

>> @pyramid_layer.tmpl_filter('form:actions', name='custom')
.. def form_actions(context, request):
..     return {'url': ...}

form_actions 函数在渲染模板之前被调用。在注册模板过滤器函数之前,必须使用 add_layer 指令定义层。

定制

可以注册任意数量的层类别,并在每个类别中注册任意数量的层。无需覆盖类别中的所有模板。例如,可以仅覆盖视图.pt 模板

>> config.add_layer('form', 'custom', path='path_to_form_directory_2/form')

和这个新目录的内容

>> ./another_path/form/
..   view.jinja2

现在视图 view.html 使用 view.jinja2 模板。但 actions.html 仍然使用原始模板。

另一个例子,如果你想自定义来自ptah.form包的字段,你所需要做的就是创建一些文件夹,将其添加为“fields”层,并将bool.pt模板放入该文件夹中,大致就是这样。

>> config.add_layer('fields', 'custom', 'mypackage:fields')

并且

>> .mypackage/fields/
..    bool.pt

请求方法

pyramid_layer还提供了请求方法render_tmpl。它接受路径。

..  ${structure: request.render_tmpl('form:actions')

.lt扩展在这种情况下是可选的。

播放器

许可协议

pyramid_layer是在BSD许可下提供的。

变更记录

0.2 (11-01-2012)

  • 添加了layout子系统

0.1 (10-30-2012)

  • 初始发布

项目详情


下载文件

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

源分发

pyramid_layer-0.2.tar.gz (14.8 kB 查看哈希值)

上传时间

由以下支持