将金字塔遍历中的视图前缀从“@@”更改为“+”

时间:2010-12-13 09:55:46

标签: python repoze.bfg pyramid

我正在考虑将网络应用从pylons移动到pyramid(正式repoze.bfg),因为遍历将比我的应用更适合我的应用。

目前,当我有一个带有多个视图的obj时,我的视图名称在网址中以“+”为前缀。 e.g:

/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有一个处理这个功能的好方法,但它使用前缀“@@”。有没有办法将其更改为“+”,以便我可以保持我的网址相同(你知道他们对酷网址的看法),并使用此功能。

1 个答案:

答案 0 :(得分:3)

是和否,您可以从“@@”更改视图前缀,但新前缀也应为2-symbold长度,请参阅sources for 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以允许任何长度的视图前缀。