我们正在使用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
错误处理程序一样?
答案 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)