5

我使用 yapps 为金字塔内的 LaTex-ish 语言生成解析器(例如,将内容翻译\begin{itemize}为相应的<ul>-Tags)。一个命令 (ie \ref{SOMEID}) 应该通过调用route_url(or route_path) 来构造一条路由并将 id 传递给它。由于此调用发生在 yapps 生成的代码和我定义的语法的深处,因此我看不到将请求对象传递给它的任何可能性。

是否有某种全局请求对象?或者,既然我预见到我不应该使用它,是否有可能在没有请求对象的情况下构造一条路由(取决于参数)?

4

1 回答 1

7

route_url需要请求和注册表 ( request.registry)。它生成与请求相关的 url,并从注册表访问所有路由和其他设置的列表。因此,您必须使用您关心的参数生成一个虚拟请求。例如:

from pyramid.request import Request

request = Request.blank('/', base_url='https://example.com/prefix')
request.registry = config.registry

现在您可以将此请求存储在任何地方,最好代表您网站的所有内容:主机名/端口 ( example.com:443)、您的应用程序安装在 ( /prefix) 的前缀、uri 方案 ( https)。

如果您需要将其深入到您的代码中,您可能必须将其设为全局或将其附加到您可用的某个上下文/注册表中,但我所展示的是如何发出您需要的请求。

于 2013-04-10T22:35:28.743 回答