按路径获取Pyramid视图(请求上下文)

1 投票
2 回答
697 浏览
提问于 2025-04-17 14:48

我正在开发一个应用程序,它可以把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

撰写回答