Llamando a otra vista en Pyramid

Mi objetivo: en Pyramid, llamar a otra vista invocable y obtener unaResponse objeto de vuelta sin conocer ningún detalle sobre esa vista invocable.

En mi aplicación Pyramid, digamos que tengo una vista "foo" que se define usando un decorador view_config:

@view_config(route_name="foo",
             renderer="foo.jinja2")
def foo_view(request):
    return {"whereami" : "foo!"}

Ahora diga que quiero enrutar "barra" a una vista que haga lo mismo por el momento, por lo que internamente llama afoo_view y devuelve su Respuesta:

@view_config(route_name="bar")
def bar_view(request):
   return foo_view(request)

...¡pero espera! Eso no funciona, ya quefoo_view no devuelve unResponse, es renderer hace

Entonces, esto funcionará:

@view_config(route_name="bar",
             renderer="foo.jinja2")
def bar_view(request):
    return foo_view(request)

as aplicará el mismo procesador quefoo_view hizo. Pero esto es malo, ya que ahora debo repetirme copiando el valor del renderizador Y teniendo que conocer el renderizador de la vista que se llama.

Entonces, espero que haya alguna función disponible en Pyramid que permita llamar a otra vista invocable y obtener unResponse objeto de vuelta sin saber o importar cómo se renderizó:

@view_config(route_name="bar")
def bar_view(request):
    response = some_function_that_renders_a_view_callable(foo_view, request)
    return response

Qué seríasome_function_that_renders_a_view_callable be?

pyramid.views.render_view parece buscar una vista por nombre; No quiero dar nombres a mis puntos de vista.

(Nota: lo que intento evitar es devolver HTTPFound para que el cliente redirija a la ruta de destino. Quiero redirigir "internamente").

Respuestas a la pregunta(6)

Su respuesta a la pregunta