跳转到主要内容

grok管理和发展UI(基础)

项目描述

grokui.base – Grok UI 的基本组件

grokui.base 是构建 Zope 实例级实用工具集合的基础层。该包提供了一组易于使用的组件,可以帮助您构建自己的配置或管理面板。 grokui.base 为其他 grokui 包提供组件,以便它们可以插入到一个连贯的布局中。

使用 grokui.base,我们可以提供不同 UI 部分,这些部分可以相互独立使用,例如 ZODB 浏览器或用于管理本地 Grok 应用程序的一般管理面板。管理员可以决定他们想要安装哪些 Grok UI 部分。

总的来说,grokui.base 提供了视图小部件、菜单、布局和用于其他组件的特殊命名空间。

详细描述

grokui.base 提供了构建连贯环境所需的工具。

++grokui++ 命名空间

为了保持合理的命名政策,grokui 组件被划分在一个逻辑命名空间中,即 ++grokui++,该命名空间在 grokui.base 中定义和注册。

这个命名空间是一个多适配器,将充当视图的父级。它是所有 grokui 页面的自然上下文。让我们首先接触这个命名空间

>>> from grokui.base import GrokUINamespace
>>> from grokui.base import IGrokUIRealm

>>> IGrokUIRealm.implementedBy(GrokUINamespace)
True

示例

我们可以构建一个简单的管理屏幕,使其适应环境,如下所示

>>> from martian.testing import FakeModule
>>> import grok
>>> from zope.interface import Interface
>>> from grokui.base import GrokUILayer
>>> class mymodule(FakeModule):
...     class MyAdminScreen(grok.View):
...       grok.layer(GrokUILayer)
...       grok.name('helloadmin')
...       grok.context(Interface)
...       def render(self):
...         return u'Hello admin!'
>>> from martiantest.fake.mymodule import MyAdminScreen

这里重要的是,我们将我们的视图设置为属于 GrokUI 命名空间,在 URL 中命名为 ++grokui++

我们将此视图注册到组件架构中

>>> from grokcore.component.testing import grok_component
>>> grok_component('MyAdminScreen', MyAdminScreen)
True

让我们创建一个浏览器来查找此视图

>>> from zope.testbrowser.wsgi import Browser
>>> browser = Browser()
>>> browser.addHeader('Authorization', 'Basic mgr:mgrpw')

当我们请求正确的命名空间时,我们可以获得此屏幕

>>> browser.open('http://localhost/++grokui++/@@helloadmin')
>>> print(browser.contents)
Hello admin!

如果我们请求此视图而没有设置正确的命名空间,则视图将无法找到

>>> browser.open('http://localhost/@@helloadmin')
Traceback (most recent call last):
...
urllib.error.HTTPError: HTTP Error 404: Not Found

GrokUI 页面

但是,我们也可以创建完全符合 GrokUI 布局的行政页面,无需太多麻烦,自动为您的页面提供菜单栏、图像和标准 grokui 布局的全部其他部分。

为此,我们从 GrokUIView 派生我们的管理页面,给它一个标题,并可选地设置一个顺序号

>>> from grokui.base.layout import GrokUIView
>>> from grokui.base.namespace import GrokUILayer
>>> class mymodule(FakeModule):
...   class CaveManagementScreen(GrokUIView):
...     # Name where we can access this page via URL:
...     grok.name('managecave')
...     # Also optional, but highly recommended:
...     grok.require('zope.ManageServices')
...     # Set title of page in menu bar:
...     grok.title('admin stuff')
...     # Display this entry very far to the left in menu bar:
...     grok.order(-1)
...
...     def render(self):
...       # Instead of render() we could also define a page template
...       # for the actual contents of this page.
...       return u'Hello cave manager!'
>>> from martiantest.fake.mymodule import CaveManagementScreen
>>> grok_component('CaveManagementScreen', CaveManagementScreen)
True

虽然标题将自动显示在 GrokUI 布局的菜单栏中,但 order 告诉我们在菜单中我们希望我们的页面出现的位置。没有标题的页面根本不会出现在菜单栏中。

GrokUIView 的实例实际上是 grok.Page 实例,它们将模板或 render 方法提供的内容渲染到给定的布局中(此处:通用 GrokUI 布局)。

我们可以在 GrokUI 命名空间 ++grokui++ 中访问此页面,名称如上所述(managecave

>>> browser.open('http://localhost/++grokui++/managecave')
>>> print(browser.contents)
<html xmlns="http://www.w3.org/1999/xhtml">
...<head>
...<title>Grok User Interface</title>
...<base href="http://localhost/++grokui++/" />
...Hello cave manager!...
...

将管理页面设置为默认目标页面

上述管理页面设置为顺序号 -1。这意味着其菜单项将出现在菜单栏的最左侧位置。由于我们目前没有顺序号更低的菜单项,因此该项甚至出现在最左侧。

此外,此最左侧条目也是默认页面,如果有人想查看正在运行的 Zope 实例的索引页面。

>>> browser.open('http://localhost/')
>>> browser.url
'http://localhost/++grokui++/@@managecave'

这意味着,我们已经重定向到我们的洞穴管理页面。

如果我们想更改此默认值,例如将其他页面设置为默认页面,我们只需为该其他管理页面提供一个较低的顺序号。然后重定向将重定向到它。

变更记录

0.8.2 (2020-08-20)

  • 添加缺少的 ICO、GIF 和 JPG 文件。

0.8.1 (2020-08-20)

  • 使用 MANIFEST 更正棕色纸袋发布。

0.8 (2020-08-20)

  • Python3.6+ 兼容性。

0.7 (2012-05-02)

  • 确保获取最新的 grok 和 grokcore.layout。

0.6 (2011-07-14)

  • 使用 grokcore.layout 并从 grok 导入。

0.5.1 (2011-03-01)

  • 确保正确配置 grokcore.view。

0.5 (2011-01-12)

  • 使用 fanstatic 代替 zope DirectoryResource。

0.4.2 (2010-12-16)

  • 更新测试以适应最新的 martian 版本。

0.4.1 (2010-11-03)

  • 测试 zope.login 的依赖项。

0.4 (2010-10-25)

  • 将 IRootFolder 的默认视图名称设置为 'index',并注册此名称的重定向视图。

0.3 (2010-10-18)

  • 删除了对 zope.app.testing 的依赖。

0.2.1 (2010-05-19)

  • 将软件包修改为符合仓库策略(许可证等)。

  • 为了不触发(错误的)模板注册警告,使用自己的模板目录作为布局模块。

0.2 (2010-03-06)

  • 已纠正一个小的 CSS 错误。

  • 现在通过 grokcore.message 注册消息系统。grokui.base不再绑定到 z3c.flashmessage

  • 已清理依赖项: grokui.base不再依赖于 zope.app.zcmlfiles,现在可以在 Grok 套件之外使用。它仅使用 grokcore 包。

0.1 (2010-02-23)

初始实现。

项目详情


下载文件

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

源分发

grokui.base-0.8.2.tar.gz (45.6 kB 查看哈希值)

上传时间

由以下机构支持

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