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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 42e267f4e87bfde45b699720ef707e2c300ca87325640cda170cc25bb0fb4130 |
|
MD5 | d719deb5ac55161425256e669b0acd90 |
|
BLAKE2b-256 | 4d3895b4e9e3259a53046c7a0b285c426b2778a3bddc7f7afd3b4d55d30ffcf2 |