Wie behandelt man in einer Traversal-Pyramiden-App eine Ressource mit __name__
, die mit dem Namen einer Ansicht übereinstimmt?Pyramid Traversal __name__ entspricht einem Ansichtsnamen
Wenn ich auf die Ansicht aufrufen "Ansicht" für eine Ressource abrufen wollte, würde ich einen URL-Pfad wie verwenden: /foo/bar/view
. Er durchquert die resource_tree wie so:
RootFactory(request) => RootFactory
RootFactory['foo'] => Foo
Foo['bar'] => Bar
Bar['view'] => KeyError
... und weil es nicht in der Vergangenheit Bar durchqueren kann & ‚view‘ übrig bleibt, geht davon aus, dass ‚Ansicht‘ ist der Ansicht Namen und passt meiner Ansicht aufrufbar
@view_config(name='view')
def view(context, request):
return Response(context.__name__)
Um die URL für diesen Pfad erhält ich request.resource_url(resource, "view"
verwenden würde).
Wenn ich jedoch eine Ressource wie Bar.__name__ = "view"
hatte, wie kann ich eine URL für "view" auf Foo auflösen?
# path: /foo/view
RootFactory(request) => RootFactory
RootFactory['foo'] => Foo # ideally stop here with view_name="view"
Foo['view'] => Bar.__name__ = "view"
# all parts of path matched so view_name="" and context=Bar
Idealerweise in dieser Situation würde /foo/view
-view(Foo, request)
zeigen und /foo/view/view
-view(Bar, request)
wo Bar.__name__ == "view"
zeigen würde.
Gibt es eine Möglichkeit, dies zu behandeln, ohne Erkennung für Kollisionen zwischen __name__
und Ansichtsnamen schreiben?