跳转到主要内容

包含资源的Grok组件。

项目描述

megrok.resourceviewlet 是一个用于通过层、上下文和视图区分来包含资源的包。

设置

让我们导入并初始化必要的工作环境

>>> import grokcore.component as grok
>>> from grokcore import view, viewlet
>>> from zope.app.wsgi.testlayer import Browser

>>> browser = Browser()
>>> browser.handleErrors = False

我们首先声明一个资源。我们将在我们的页面上包含它

>>> from fanstatic import Resource, Library
>>> myLibrary = Library('test_library', 'ftests/resources')
>>> Thing = Resource(myLibrary, 'thing.js')

这一步是通过入口点完成的。对于测试,我们手动完成

>>> from zope.fanstatic.zcml import create_factory
>>> from zope.component import getGlobalSiteManager
>>> from zope.publisher.interfaces.browser import IBrowserRequest
>>> from zope.interface import Interface

>>> resource_factory = create_factory(myLibrary)
>>> getGlobalSiteManager().registerAdapter(
...      resource_factory, (IBrowserRequest,), Interface, myLibrary.name)

组件

为了展示我们的资源视图小部件,我们首先需要一个用于渲染的页面。此页面包含一个名为“资源”的内容提供程序

>>> from zope.interface import Interface

>>> class Index(view.View):
...   view.require("zope.Public")
...   view.context(Interface)
...
...   template = view.PageTemplate("""<html><head>
...     <tal:resources replace='provider:resources' />
...   </head></html>""")

>>> grok.testing.grok_component('index', Index)
True

管理器

我们现在注册一个名为“资源”的内容提供程序。它将是一个ResourcesManager。ResourcesManager是一个专门用于渲染ResourceViewlets的组件

>>> from megrok.resourceviewlet import ResourcesManager

>>> class Resources(ResourcesManager):
...   viewlet.context(Interface)

>>> grok.testing.grok_component('resources', Resources)
True

视图小部件

现在,我们注册一个包含我们的资源的ResourceViewlet。声明非常简单

>>> from megrok.resourceviewlet import ResourceViewlet

>>> class SomeViewlet(ResourceViewlet):
...   viewlet.context(Interface)
...   resources = [Thing]

>>> grok.testing.grok_component('viewlet', SomeViewlet)
True

默认情况下,ResourceViewlet注册为ResourcesManager的一个实例。大多数情况下,一个页面只包含这些内容提供程序中的一个。如果不是这种情况,请确保提供您自己的viewletmanager指令值。

渲染

渲染我们的页面应该会渲染ResourcesManager,因此包含我们的资源

>>> browser.open('https://127.0.0.1/@@index')
>>> print browser.contents
<html><head>
  <script type="text/javascript"
   src="https://127.0.0.1/fanstatic/test_library/thing.js"></script>
</head></html>

成功了!享受吧。

变更日志

0.2 (2011-01-18)

  • megrok.resourceviewlet 现在可以工作,并且依赖于 fanstatic

  • 依赖项已大幅减少。

0.1 (2009-12-24)

  • 初始发布

项目详情


下载文件

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

源代码发行版

megrok.resourceviewlet-0.2.tar.gz (7.2 kB 查看哈希值)

上传时间 源代码

支持者