Mi objetivo: En la pirámide, para llamar a otro punto de vista se puede llamar, y para obtener un objeto Response
vuelta sin conocer ningún detalle acerca de este punto de vista se puede llamar.otra vista en Pyramid
En mi solicitud Pirámide, decir que tengo un punto de vista "foo", que se define utilizando un decorador view_config:
@view_config(route_name="foo",
renderer="foo.jinja2")
def foo_view(request):
return {"whereami" : "foo!"}
Ahora dicen que yo quiero ruta "barra" a una vista que hace lo mismo por el momento, por lo que llama internamente foo_view
y devuelve su respuesta:
@view_config(route_name="bar")
def bar_view(request):
return foo_view(request)
... pero espera! Eso no funciona, ya que foo_view
no devuelve un Response
, su procesador de hace.
Por lo tanto, esto va a funcionar:
@view_config(route_name="bar",
renderer="foo.jinja2")
def bar_view(request):
return foo_view(request)
ya que se aplicará el mismo procesador que foo_view
lo hicieron. Pero esto es malo, ya que ahora debo repetirme copiando el valor del procesador Y teniendo que saber el procesador de la vista a la que se llama.
Por lo tanto, voy a esperar que existe alguna funcionalidad disponible en la pirámide que permite llamar a otro punto de vista se puede llamar y obtener un objeto Response
atrás sin saber o preocuparse de cómo se hizo:
@view_config(route_name="bar")
def bar_view(request):
response = some_function_that_renders_a_view_callable(foo_view, request)
return response
¿Cómo sería some_function_that_renders_a_view_callable
ser?
pyramid.views.render_view
parece buscar una vista por su nombre; No quiero dar nombres a mis puntos de vista.
(Nota: Volviendo HTTPFound para causar el cliente para volver a dirigir a la ruta de destino es lo que estoy tratando de evitar que quiero "internamente" redirigir.). documentación
Esto se traduce en "No se puede convertir vista ValueError valor de retorno '' en un objeto de respuesta". ¿Hay algo más que deba hacer en la vista de destino para que esto funcione? – kes