【发布时间】:2016-02-13 06:59:08
【问题描述】:
虽然您可以通过带有以 下划线 开头的 id 的代码内容生成,例如“_foo”,但您似乎无法遍历具有此特殊 id 的项目。
每次尝试使用浏览器访问以这种方式命名的内容都会导致 NotFound 错误。像 __bobotraverse__ 或 __getitem__ 这样的方法都不会被调用,就像很早就检查了这个限制一样。
这个限制是如何起作用的,我该如何改变它?我可以访问 id 中带有前缀下划线的子对象吗?
【问题讨论】:
-
AFAIK 它被实现为 beforetraversel 钩子。但我不确定他们把代码埋在哪里 :-) 当我挖得足够深时,我会添加一个答案。
-
澄清你的意思是哪种遍历?通过 HTTPRequest 或类似 unrestrictedTraverse() 的方式发布对象?
-
我只需要通过浏览器访问像myplonesite/myfoldercontent/_something这样的URL
-
hmmm... 这可能对您有所帮助:github.com/zopefoundation/zope.publisher/blob/master/src/zope/…。但它会引发 Unauthorized not NotFound。
-
@Mathias 它确实引发了 NotFound。我在那里看到了一些参考:dieter.handshake.de/pyprojects/zope/book/…