bor*_*orn 5 web-frameworks parser-generator pyramid
我使用yapps为金字塔内的LaTex-ish语言生成解析器(例如将类似\begin{itemize}的东西翻译成相应的<ul>-Tags).一个命令(即\ref{SOMEID})应该通过route_url(或route_path)的调用构造一个路由并将id传递给它.由于此调用发生在由yapps生成的代码和我定义的语法的深处,我认为没有任何可能将请求对象传递给它.
是否存在某种全局请求对象?或者,因为我预见到我不应该使用它,是否有可能在没有请求对象的情况下构造路由(取决于参数)?
route_url需要一个请求和一个注册表(request.registry).它生成相对于请求的URL,并从注册表访问所有路由和其他设置的列表.因此,您必须使用您关心的参数生成虚拟请求.例如:
from pyramid.request import Request
request = Request.blank('/', base_url='https://example.com/prefix')
request.registry = config.registry
Run Code Online (Sandbox Code Playgroud)
现在您可以将此请求存储在任何位置,最好代表您网站的所有内容:主机名/端口(example.com:443),应用程序安装在(/prefix)的前缀,uri方案(https).
如果您需要深入了解代码,可能需要将其设置为全局代码或将其附加到您可用的某些上下文/注册表中,但我所展示的是如何发出您需要的请求.