ピラミッドトラバーサルのビュープレフィックスを「@@」から「+」に変更します
-
09-10-2019 - |
質問
Webアプリの移動を検討しています パイロン に ピラミッド (正式にはrepoze.bfg)Traversalが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にはこれを処理する機能がありますが、プレフィックス「@@」を使用しています。これを「+」に変更する方法はありますか。これにより、URLを同じものに保ち(クールなURLについて彼らが言うことを知っていることを知っています)、この機能を使用できます。
解決
はいといいえ、[@@]からビュープレフィックスを変更できますが、新しいプレフィックスも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をリファクタリングして、任意の長さビューのプレフィックスを許可する必要があると思います。
所属していません StackOverflow