如何让Pyramid invoke_subrequest通过view_config上下文路由进行错误处理

时间:2016-01-26 12:49:55

标签: python view config pyramid

我们正在使用request.invoke_subrequest()从Python代码运行视图。

我们希望subrequests响应能够完成为错误定义的视图(context routing)。

例如,如果我们定义了几个错误视图,如下所示:

@view_config(context=requests.exceptions.HTTPError)
def response_error(context, request):
    if context.response.status_code == 412:
        return httpexceptions.HTTPPreconditionFailed()
    # [...]

对每种subrequests使用context时如何执行此操作而不必为每种类型添加除了关闭?

理想情况下,我们希望获得类似的内容(例如虚构的view_lookup()函数):

try:
    subresp = request.invoke_subrequest(subrequest)
except Exception as e:
    subresp = view_lookup(e)(subrequest)

use_tweens=True中使用invoke_subrequest()似乎也无法执行错误视图。

有没有办法明确调用view lookup,以便我们获得subresponse,好像它会通过view_config错误处理程序一样?

1 个答案:

答案 0 :(得分:1)

您正在寻找的可能是:pyramid.view.render_view_to_response

from pyramid.view import render_view_to_response

try:
    subresp = request.invoke_subrequest(subrequest)
except Exception as e:
    subresp = render_view_to_response(e, subrequest)