Python 如何与金字塔中的所有模板共享选定数量的数据?

Python 如何与金字塔中的所有模板共享选定数量的数据?,python,pyramid,Python,Pyramid,我读过烹饪书中关于利用所有请求的文章,但我可能不完全理解,因为我看不出这是否与我的问题有关 我在一个网站上呈现了很多模板,每个模板都需要不同的用户信息。例如,与上的此页面类似,我的每个页面都需要显示我的用户名、点数、通知数量、徽章数量等。我拥有所有这些信息,但我发现自己必须将其添加到发送到模板的每个请求字典中,如下所示: return dict(page=page, name=name, save_url=save_url, logged_in=authentic

我读过烹饪书中关于利用所有请求的文章,但我可能不完全理解,因为我看不出这是否与我的问题有关

我在一个网站上呈现了很多模板,每个模板都需要不同的用户信息。例如,与上的此页面类似,我的每个页面都需要显示我的用户名、点数、通知数量、徽章数量等。我拥有所有这些信息,但我发现自己必须将其添加到发送到模板的每个请求字典中,如下所示:

return dict(page=page, name=name, save_url=save_url,
                logged_in=authenticated_userid(request), title='add new', url='/new', points=points, num_badges=badges)

是否有一种方法可以将所有这些合并一次,这样我就可以只向每个视图发送一个条目?我确信每次都运行相同的查询是不好的,但是每次都要为每个视图输入查询也是很烦人的。有什么建议吗?

最简单的方法是用一种方法生成“公共”信息,返回dict,然后用该信息更新本地视图dict

local = dict(page=page, name=name, save_url=save_url, title='add new',
     url='/new', points=points, num_badges=badges)
local.update(retrieve_common_information(request))
return local
另一种方法是使用类似(现在已找到的文档)的方法,将页面的常见“片段”呈现委托给不同的视图


一个这样的视图可以处理您想要呈现的公共用户信息,并在任何地方重复使用。

最简单的方法是在一个方法中生成“公共”信息,返回dict,然后用该信息更新本地视图dict

local = dict(page=page, name=name, save_url=save_url, title='add new',
     url='/new', points=points, num_badges=badges)
local.update(retrieve_common_information(request))
return local
另一种方法是使用类似(现在已找到的文档)的方法,将页面的常见“片段”呈现委托给不同的视图


一个这样的视图可以处理您想要呈现的普通用户信息,并且可以在任何地方重复使用。

谢谢Marijin。.我想我问了两个问题,这是最简单的方法(看起来您已经回答了,我将试着测试它),但它不是经常运行这个查询吗?例如,如果用户正在浏览站点,而不考虑页面上的内容,则将运行此常规信息查询。我是网络开发新手,如果这是一种正常的查询,我很抱歉;HTTP是无状态的,每次进入查询时,您都需要重建该状态。有一些技巧,比如会话,但它们在可伸缩性方面也有成本。啊……总是一种权衡。谢谢现在有意义了。谢谢Marijin..我想我问了两个问题,这是最简单的方法(看起来你回答了,我会试着测试一下),但它不会一直运行这个查询吗?例如,如果用户正在浏览站点,而不考虑页面上的内容,则将运行此常规信息查询。我是网络开发新手,如果这是一种正常的查询,我很抱歉;HTTP是无状态的,每次进入查询时,您都需要重建该状态。有一些技巧,比如会话,但它们在可伸缩性方面也有成本。啊……总是一种权衡。谢谢现在有意义了。