1

我阅读了关于使用户对象适用于所有请求的食谱文章,但我可能不完全理解它,因为我看不出它是否与我的问题有关。

我在我正在处理的网站上渲染了很多模板,每个模板需要不同的用户信息。例如,像 SO 上的这个页面一样,我的每个页面都需要显示我的用户名、积分、通知数量、徽章数量等。我拥有所有这些信息,但我发现自己必须将其添加到我发送到的每个请求字典中像这样的模板:

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)

有没有办法将所有这些组合一次,这样我就可以向每个视图发送一个条目?我敢肯定每次都运行相同的查询并不好,但必须为每个视图都键入它也很烦人。有什么建议么?

4

1 回答 1

1

最简单的方法是在一种方法中生成您的“通用”信息,返回一个字典,然后用该信息更新您的本地视图字典

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

另一种方法是使用类似pyramid_viewgroup(文档现在位于新位置)之类的东西,您可以在其中将页面的常见“片段”的呈现委托给单独的视图。

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

于 2012-07-08T20:24:48.627 回答