【问题标题】:How can I get object from ZODB by url?如何通过 url 从 ZODB 获取对象?
【发布时间】:2013-01-31 14:52:38
【问题描述】:

如何通过 url 'http://ecample.com/folder1/object1' 从 Zope3 项目中的 ZODB 数据库中获取对象?

obj1 = someMethod('http://ecample.com/folder1/object1')

有没有任何方法的工具呢?像 absoluteUrl() 但相反?或者我必须解析 url 并从 db root 手动获取对象?...谢谢

【问题讨论】:

  • 您如何使用 ZODB?在您自己的应用程序中,或者您是否有 HTTP 发布者(Zope、Bluebream、Grok 等)? ZODB 本身对 HTTP一无所知
  • 我正在使用 Zope 3 进行 HTTP 发布
  • Zope 3 发布者负责对象发布。您的具体问题是什么?
  • 我有一些 url,在 python 代码中,我想通过该 url “获取”该对象以获得进一步的逻辑。
  • 从 Zope3 应用程序外部还是从内部?您需要执行与发布者执行相同的遍历,Zope 3 有用于此的接口。请注意,这与 ZODB无关; Zope3 发布的其他对象也是如此。

标签: zope zodb zope3


【解决方案1】:

您可以使用遍历 API 将路径转换为对象:

from zope.traversing.api import traverse

obj = traverse(context, path)

你需要一个上下文来遍历from;例如,使用站点根目录作为 URL 路径。如果您只有一个 URL,则需要从中解析出路径:

from urlparse import urlparse

path = urlparse(url).path

【讨论】:

    猜你喜欢
    • 2020-07-30
    • 2015-10-27
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多