1

我正在考虑将网络应用程序从pylons移动到金字塔(正式地 repoze.bfg),因为遍历比 url 调度更适合我的应用程序。

目前,当我有一个包含多个视图的 obj 时,我的视图名称在 url 中以“+”为前缀。例如:

/path/to/obj/   (default view)
/path/to/obj/+custom_view1
/path/to/obj/+custom_view2
/path/to/obj/+edit
/path/to/obj/+delete
/path/to/obj/sub_obj/

Pyramid 有一个特性来处理这是一个很好的方法,但它使用前缀“@@”。有没有办法将其更改为“+”,以便我可以保持我的网址不变(你知道他们对酷网址的看法)并使用此功能。

4

1 回答 1

3

是和否,您可以从“@@”更改视图前缀,但新前缀也应该是 2 符号长度,请参阅 traverser 的源代码

子类ResourceTreeTraverser化然后注册它而不是默认的应该可以解决问题:

from pyramid.traversal import ResourceTreeTraverser as BaseResourceTreeTraverser

class ResourceTreeTraverser(BaseResourceTreeTraverser):
    VIEW_SELECTOR = "++"

from pyramid.config import Configurator
from pyramid.interfaces import ITraverser
from zope.interface import Interface

config = Configurator()
config.registry.registerAdapter(ResourceTreeTraverser, (Interface,), ITraverser)

就个人而言,我认为 VIEW_SELECTOR 应该被重构以允许任何长度的视图前缀。

于 2011-01-08T13:39:43.297 回答