跳转到主要内容

repoze.bfg的Zope 3 "内容提供者"的类似物

项目描述

repoze.bfg.viewgroup

repoze.bfg.viewgrouprepoze.bfg的一个扩展,它允许在ZCML中进行bfg:viewgroup声明,其行为类似于bfg:view,因为它会导致bfg视图注册。然而,与“常规”的bfg:view注册不同,bfg:viewgroup注册引用了一个或多个其他bfg视图(通过名称、接口和请求类型进行匹配)。当调用bfg:viewgroup时(无论是通过遍历还是通过程序性视图执行),视图组将返回一个响应,将所有引用的视图渲染组合成一个单独的主体。

此包主要是应一些喜欢使用Zope 3“内容提供者”和“视图小部件”的人的要求而制作的,尽管它的功能略少,因为bfg视图本身通常不包含接口(它们只是可调用的),所以您不能将视图组注册到视图接口。

请注意,repoze.viewgroup的作者不同意其基于的概念;对他来说,直接在视图中完成工作似乎更简单、更容易理解,而不需要所有这些愚蠢的机制(这些文档尤其难以编写,因为它们完全自引用,这是愚蠢的机制的明确迹象,所以如果我在解释上遇到困难,请原谅我)。这主要只是一个概念证明,尽管是经过测试且功能齐全的。

安装

使用setuptools安装,例如(在虚拟环境中)

$ easy_install -i http://dist.repoze.org/lemonade/dev/simple \
  repoze.bfg.viewgroup

用法

要使用视图组,您必须

  1. 创建一个ZCML注册,该注册用于注册视图组。

  2. 可以通过正常URL遍历调用视图组,就像普通视图一样 - 或者 - 使用provider API,通过视图组名称将内容注入到模板中。

ZCML注册

通过bfg:viewgroup指令在ZCML中创建一个bfg:viewgroup注册

<bfg:viewgroup
  name="tabs_group"
  viewnames="login_tab content_tab"
  for=".interfaces.ISite"
 />

该指令的组成属性包括

name – 通过遍历或程序性视图执行可以找到视图组的名称

此属性与bfg:view指令中的name属性具有相同的意义。

viewnames – 在渲染此视图组时将渲染的视图名称(按渲染顺序),名称之间用空格分隔

。每个名称应引用ZCML中其他地方定义的视图名称。

for – 此视图注册的“模型”接口

此属性与其在bfg:view指令中的对应属性具有相同的意义。

for参数是可选的;默认值为None。名称参数也是可选的。默认值为空字符串(表示默认视图)。

使用具有namefor的视图组注册将与具有相同参数的视图注册冲突,因此最好将视图组名称与视图名称区分开来。

视图组可以按需在viewname参数中引用另一个视图组(尽管这是不合理的)。

视图组渲染时会发生什么

当视图组被渲染时,它会尝试渲染它引用的每个组成视图(通过viewnames)。如果单个组成视图由于权限问题无法渲染,则会跳过。如果组成视图无法渲染,因为找不到它,则会引发ValueError。视图组的渲染是视图组引用的所有允许视图的简单连接。

Provider辅助工具

为希望在模板内渲染视图组的人提供了一个名为repoze.bfg.viewgroup.group.Provider的辅助类。可以构造一个Provider实例并将其传递到模板渲染中,以便可以使用类似于Zope 3中provider:表达式类型的语法。例如,此视图可能会渲染一个模板

from repoze.bfg.view import bfg_view

@bfg_view(template='templates/mytemplate.pt')
def myview(context, request):
    from repoze.bfg.viewgroup.group import Provider
    provider = Provider(context, request)
    return {'provider':provider}

正在渲染的模板可以使用provider通过传递视图或视图组名称来“填充插槽”,例如

<html>
  <head>
   <span tal:replace="structure provider('headgroup')/>
  </head>
  <body>Hello!</body>
</html>

传递给provider的名称应是一个bfg视图名称或bfg视图组名称。

报告错误/开发版本

访问http://bugs.repoze.org来报告错误。访问http://svn.repoze.org来下载开发版本或标记版本。

更改

0.3 (2010-06-15)

  • 与BFG 1.2兼容;第一个PyPI版本。

0.2

  • 对即将推出的BFG版本的支持(该版本不需要zope.security,所以我们也不需要)。

0.1

  • 初始版本。

项目详细信息


下载文件

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

源分发

repoze.bfg.viewgroup-0.3.tar.gz (8.2 kB 查看散列)

上传时间

由以下提供支持

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