按路径获取Pyramid视图(请求上下文)
我正在开发一个应用程序,它可以把websocket消息转换成AJAX请求发送到服务器。主要是因为Pyramid已经有一个很好的URL分发系统,不利用它就太傻了。
我想知道有没有简单的方法可以在Pyramid中把一个URL(可能是一个实例化的请求对象)分发到对应的视图函数,并且获取这个视图函数的结果?或者至少获取与请求相关的视图函数的输出?
我试过“prequest.py”这个脚本,它基本上模拟了一个完整的HTTP客户端,并给你返回响应(我还没能让它正常工作,但看一下源代码还是有帮助的),我不想用这种方式。
2 个回答
2
你可以使用 pview
命令里的代码,把一个路径转换成视图引用:
from pyramid.scripts.pviews import PViewsCommand
pvcomm = PViewsCommand([])
view = pvcomm._find_view(path, request.registry)
虽然实现这个功能的代码有点复杂,但 PViewsCommand
已经为我们处理好了这一切。
0
我在最新版本的Pyramid(1.4a1)中成功使用了Router.invoke_subrequest。
这让所有与路由相关的功能都可以使用,比如URL分发、参数传递和中间件。
你可以在这里了解更多信息:http://docs.pylonsproject.org/projects/pyramid/en/latest/api/request.html#pyramid.request.Request.invoke_subrequest