grok组件包括资源。

megrok.resourceviewlet的Python项目详细描述


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)

部件

为了演示我们的资源viewlet,我们首先需要一个页面 提供。此页包含名为“resources”的内容提供商:

>>> 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

经理

我们现在注册一个名为“resources”的内容提供程序。它将是一个 资源管理器。ResourcesManager是一个组件 专用于呈现resourceviewlets:

>>> from megrok.resourceviewlet import ResourcesManager

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

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

viewlet

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

>>> from megrok.resourceviewlet import ResourceViewlet

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

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

默认情况下,ResourceViewlet注册为 资源管理器。大多数情况下,一个页面只包含 这些内容提供商。如果不是这样,一定要提供 您自己的viewletmanager指令值。

渲染

呈现我们的页面应该呈现ResourcesManager和 因此,请包括我们的资源:

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

它起作用了!享受吧。

更改日志

0.2(2011-01-18)

  • megrok.resourceviewlet现在可以工作,并且依赖于fanstatic
  • 依赖性大大减少。

0.1(2009-12-24)

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
IE中的java跨域cookie问题   重复java中已经满足的循环   编译java RMI服务器时出错   JavaServlet POST中作为参数传递的javascript大型JSON数组数据为空   java片段未每次刷新/调用   java无法编译。错误消息   java如何构造大型类?   java Hibernate:TableThingsDB。事情并不存在   java如何操作从匹配项创建的数组。发现   循环以搜索和显示数组Java的某些部分   加载或注册SQLite JDBC驱动程序时出现java问题   活动和服务之间的java连接   JavaGWTG2D:ie8中的drawImage   java在安卓中设置hessian阈值   在Tomcat中使用Logback时发生java错误