В приложении «Траверса пирамиды» как обрабатывается ресурс с __name__
, который соответствует имени вида?Перемещение пирамиды __name__, соответствующее имени представления
Если бы я хотел получить доступ к представлению, предназначенному для просмотра для ресурса, я бы использовал URL-адрес, например: /foo/bar/view
. Она пересекает resource_tree, как так:
RootFactory(request) => RootFactory
RootFactory['foo'] => Foo
Foo['bar'] => Bar
Bar['view'] => KeyError
... и потому, что он не может пройти мимо бара & «зрения», что осталось, это предполагает, что «представление» является имя вида, и соответствует моему мнению вызываемая
@view_config(name='view')
def view(context, request):
return Response(context.__name__)
Чтобы получить URL для этого пути я бы использовать request.resource_url(resource, "view"
).
Однако, если у меня был ресурс такой, что Bar.__name__ = "view"
, как я могу разрешить URL-адрес для «просмотра» на 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
В идеале, в этой ситуации, /foo/view
бы указать на view(Foo, request)
и /foo/view/view
бы указать на view(Bar, request)
где Bar.__name__ == "view"
.
Есть ли способ справиться с этим, не записывая обнаружение для столкновений между __name__
и просматривать имена?