我阅读了关于使user objects对所有请求都有用的食谱文章,但我可能完全不了解它,因为我看不出它是否与我的问题有关。
我在我正在处理的网站上渲染了很多模板,并且每个模板都需要不同的用户信息。例如,像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)
有没有办法将所有这一切组合在一起所以我可以向每个视图发送一个条目?我确定每次都运行相同的查询并不好,但它也很烦人必须为每个视图键入它。有什么建议吗?
答案 0 :(得分: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
(文档现在位于at a new location)的内容,您可以将页面的常见“代码段”呈现委派给不同的视图。
其中一个视图可以处理您想要呈现的常见用户信息,并可以在任何地方重复使用。