包含资源的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 查看哈希值)
关闭
megrok.resourceviewlet-0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bad77f62df07eadcb00989770d19bb6d56e071547e79f5bc51d8f1a115634a4d |
|
MD5 | fe77fa2746a1c3e236b5baa26e9783d7 |
|
BLAKE2b-256 | 93b69eb562ba1579afffab9bc45ff1098b1dfdf105c46bb5343df2482e414dd1 |