gpt4 book ai didi

Plone 遍历和禁止的 Zope id

转载 作者:行者123 更新时间:2023-12-05 00:20:00 26 4
gpt4 key购买 nike

虽然您可以通过代码以 开头的 id 生成内容。下划线 ,比如“_foo”,好像不能遍历这个特殊id的item。
每次尝试访问以这种方式命名的内容 使用浏览器 导致 NotFound 错误。两种方法都不像 __bobotraverse____getitem__被调用,就像很早就检查了这个限制一样。

这个限制是如何工作的,我该如何改变它?我可以访问 id 中带有前缀下划线的子对象吗?

最佳答案

unrestrictedTraverse 内找到来自 OFS.Traversable 的实现:

if name[0] == '_':
# Never allowed in a URL.
raise NotFound, name

……但这还不够。还有另一个检查类似于@Mathias 在 ZPublisher.BaseRequest.DefaultPublishTraverse 中通知的检查在 publishTraverse方法。
if name[:1]=='_':
raise Forbidden("Object name begins with an underscore at: %s" % URL)

可悲的是,要覆盖它并不简单:
  • unrestrictedTraverse在 Plone 站点上下文中调用(因此我不能仅针对我的内容类型对其进行自定义)
  • publishTraverse方法归请求实现所有(也许为此我可以使用广告自定义发布遍历器?)

  • 解决这个问题的最简单方法似乎是通过monkeypatch。

    关于Plone 遍历和禁止的 Zope id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343270/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com