In un'applicazione piramide Traversal, come si gestisce una risorsa w/a __name__
che corrisponde al nome di una vista?Pyramid Traversal __name__ corrispondente a un nome vista
Se volessi visualizzare la vista "visualizza" per una risorsa, utilizzerei un percorso URL come: /foo/bar/view
. Si attraversa la resource_tree come così:
RootFactory(request) => RootFactory
RootFactory['foo'] => Foo
Foo['bar'] => Bar
Bar['view'] => KeyError
... e perché non può attraversare passato Bar & 'vista' che resta, si presume che 'vista' è il nome della vista, e li associa alle mio punto di vista callable
@view_config(name='view')
def view(context, request):
return Response(context.__name__)
per ottenere l'URL per quel percorso userei request.resource_url(resource, "view"
).
Tuttavia, se avessi una risorsa tale che Bar.__name__ = "view"
, come posso risolvere un URL per "visualizza" su Foo?
# 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
Idealmente, in questa situazione, /foo/view
indicherebbe view(Foo, request)
, e /foo/view/view
indicherebbe view(Bar, request)
dove Bar.__name__ == "view"
.
C'è un modo per gestire questo senza scrivere il rilevamento per le collisioni tra __name__
e visualizzare i nomi?