我的目标:在 Pyramid 中,调用另一个可调用视图,并获得一个Response
在不知道有关该视图可调用的任何详细信息的情况下拒绝返回。
在我的 Pyramid 应用程序中,假设我有一个使用 view_config 装饰器定义的视图“foo”:
@view_config(route_name="foo",
renderer="foo.jinja2")
def foo_view(request):
return {"whereami" : "foo!"}
现在假设我想将“bar”路由到暂时执行相同操作的视图,因此它在内部调用foo_view
并返回其响应:
@view_config(route_name="bar")
def bar_view(request):
return foo_view(request)
...可是等等!那是行不通的,因为foo_view
不返回Response
, its renderer does.
所以,这会起作用:
@view_config(route_name="bar",
renderer="foo.jinja2")
def bar_view(request):
return foo_view(request)
因为它将应用与以下相同的渲染器foo_view
做过。但这很糟糕,因为我现在必须通过复制渲染器值并必须知道被调用视图的渲染器来重复自己。
所以,我希望 Pyramid 中有一些可用的函数,允许调用另一个视图可调用并获取Response
在不知道或关心它是如何渲染的情况下返回对象:
@view_config(route_name="bar")
def bar_view(request):
response = some_function_that_renders_a_view_callable(foo_view, request)
return response
什么会some_function_that_renders_a_view_callable
be?
pyramid.views.render_view
似乎按名称搜索视图;我不想说出我的观点。
(注意:返回 HTTPFound 导致客户端重定向到目标路由是我试图避免的。我想“内部”重定向)。