Python+;金字塔+;Mako:事件中的上下文、视图中的上下文和模板中的上下文有什么区别?

Python+;金字塔+;Mako:事件中的上下文、视图中的上下文和模板中的上下文有什么区别?,python,pyramid,mako,Python,Pyramid,Mako,我一直在努力理解这一点,但却无法找到关于它的精确文档。我对Python Pyramid+Mako设置中上下文的不同含义感到困惑 以下是一些代码片段(如果需要更多上下文,请告诉我): 在我的mako模板中,举个例子,我只有: Mako template context=${context} 因此,我会发出请求,并从控制台或浏览器获得以下输出: login_get(): context=<MyPKG.Root object at 0x1523c90> add_renderer_globals(

我一直在努力理解这一点,但却无法找到关于它的精确文档。我对Python Pyramid+Mako设置中上下文的不同含义感到困惑

以下是一些代码片段(如果需要更多上下文,请告诉我):

在我的mako模板中,举个例子,我只有:

Mako template context=${context}
因此,我会发出请求,并从控制台或浏览器获得以下输出:

login_get(): context=<MyPKG.Root object at 0x1523c90>
add_renderer_globals(): request.tmpl_context=<pyramid.request.TemplateContext object at 0x12fbc50>
add_renderer_globals(): context=<MyPKG.Root object at 0x1523c90>
Mako template context=<mako.runtime.Context object at 0x15a4950>
login\u get():上下文=
添加\u呈现程序\u全局():request.tmpl\u上下文=
添加\u渲染器\u全局():上下文=
Mako模板上下文=
我的问题是:有什么区别,你用它们做什么?我也不明白为什么在语义上,我声明了
root\u factory
=MyPKG.root
,它在我的视图和订阅者中变成了
context
=MyPKG.root


谢谢你给我任何帮助我理解的提示。

首先,忽略
request.tmpl\u context
。这只是
请求
对象上的一个字典,您可以将内容添加到该对象中,但它在金字塔应用程序中根本不常用。这是塔架合并案的继子

使用Mako时有两个
context
对象。第一个(
mako.runtime.Context
)由mako提供:


金字塔通常将遍历上下文(
MyPKG.Root
)公开为模板中的
context
。但是,Mako已经有一个使用该名称的变量:-(因此,金字塔的
context
实际上被命名为
\u context
首先,忽略
request.tmpl\u context
。这只是
request
对象上的一个字典,您可以向其添加内容,但在金字塔应用程序中根本不常用。它是挂架合并中的一个继子女

使用Mako时有两个
context
对象。第一个(
Mako.runtime.context
)由Mako提供:


金字塔通常在模板中将遍历上下文(
MyPKG.Root
)公开为
context
。但是,Mako已经有一个使用该名称的变量:-(因此,金字塔的
context
实际上被命名为
\u context

我相信没有其他人会想到更好的解释,所以我会接受这个答案,因为它回答了我的问题。@michael merickel:我们能在金字塔文档中找到这个信息吗?如果不能,我们应该更新它吗?Thx!因为
\u context
是没有文档记录的。。)>request.tmpl\u context没有什么作用,实际上现在文档已经被弃用了。我相信没有其他人会想出更好的解释,所以我会接受这个答案,因为它回答了我的问题。@michael merickel:我们能在pyramid doc中找到这个信息吗?如果不能,我们应该更新它吗?Thx!如果
\u context
没有文档记录,怎么办ver
request.tmpl\u context
没有什么作用,实际上现在已经被弃用了。
login_get(): context=<MyPKG.Root object at 0x1523c90>
add_renderer_globals(): request.tmpl_context=<pyramid.request.TemplateContext object at 0x12fbc50>
add_renderer_globals(): context=<MyPKG.Root object at 0x1523c90>
Mako template context=<mako.runtime.Context object at 0x15a4950>