我想在Django中输出一些依赖于会话数据的信息。我们以“登录”/“登录为| Logout”片段为例。这取决于我的request.session['user']
。
当然,每次渲染页面然后打开{% if user %}
时,我都可以在上下文中放置一个用户对象,但这似乎打破了DRY的想法 - 我必须将用户添加到每个视图的每个上下文中
如何提取这样的片段并使其更常见?
答案 0 :(得分:5)
使用template inheritance从适当使用上下文公共部分的公共基础派生所有模板,并使用工厂函数创建所有上下文,以确保在其中插入这些公共部分。< / p>
答案 1 :(得分:0)
您是否只是在登录时才能访问您网站的某些区域?或特定页面的某些区域?
如果要阻止对整个URL的访问,可以在视图中的函数中使用@login_required装饰器来阻止某些访问。此外,您可以使用包含来保留您网站的公共部分,这些公共部分需要用户登录一个单独的html,这样您只需编写一次if语句。
答案 2 :(得分:0)
您可能希望使用包含逻辑的上下文处理器,并将其放入您可以在任何页面中使用的变量中,而无需将其添加到每个调用中。
查看更多信息