Pyramid视图层
项目描述
pyramid_layer
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包的
>> 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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | adf24c5178f076e1f4a97ddd09679b2f7f7c4962456688861d72b9b05a5dcd35 |
|
MD5 | 1abd6e0b316365633b964761b63a92ba |
|
BLAKE2b-256 | 5b4a25d94c11706f251658e9e22791ba14ee1f49ffe2a10eaef520a5e835b8f0 |