跳转到主要内容

Pyramid视图层

项目描述

player

https://travis-ci.org/fafhrd91/player.png

player允许使用两个参数来引用模板,类别和名称。还可以为每个层使用一组目录,在这种情况下,player会在每个目录中搜索模板。这允许在不更改代码的情况下覆盖模板。例如,表单库可以定义类别为< cite> field 的层。

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

在您的应用程序中,您可以通过定义新层来覆盖这些模板中的任何一个,该层针对< cite> field 类别。

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

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

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

可以使用< cite> add_layer 配置指令来定义层。

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

< cite> 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代码。有< cite> add_tmpl_filter 指令和< cite> player.tmpl_filter 装饰器

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

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

>> import player

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

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

自定义

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

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

以及此新目录的内容

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

现在view < cite> view.html 使用< cite> view.jinja2 模板。但< cite> actions.html 仍然使用原始模板。

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

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

并且

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

请求方法

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

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

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

player

许可

player 提供 BSD 许可。

变更

0.6.1 (01-22-2013)

  • 添加了 python 2.6

0.6 (12-10-2012)

  • 允许在 render 函数中使用标准渲染器

0.5 (11-30-2012)

  • 使用 jinja2 作为模板

  • 添加了 layout_data 请求属性

  • 允许向 error 消息传递多个消息

0.4 (11-12-2012)

  • 添加了 player.layout 渲染器

  • player 控制台脚本添加了 -c 参数,它允许自定义模板

  • set_layout_data 接受关键字参数

  • 删除了 player.wrap_layout()

  • 删除了 python2.6 支持

0.3 (11-07-2012)

  • 添加了 set_layout_data 请求方法,允许设置全局布局选项

  • 添加了状态消息

  • 添加了格式化程序

0.2 (11-01-2012)

  • 添加了 layout 子系统

0.1 (10-30-2012)

  • 初始发布

项目详情


下载文件

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

源分布

player-0.6.1.tar.gz (18.3 kB 查看散列)

上传时间

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面