我有一个名为message_base的基本模板,它扩展了主基本模板,我需要在message_base中显示一个动态菜单...现在我知道我可以使用模板上下文处理器,但我想知道是否有任何方法限制数据只能从message_base及其子页面访问,而不是整个应用程序,因为我认为在每个请求中向所有页面发送数据都是不必要的。
由于
答案 0 :(得分:0)
您的message_base
不是单独的页面。它只是由Django的模板引擎呈现的一个页面的一部分。 message_base
扩展了base
模板,这意味着它是使用父模板base
和子模板message_base
构建的同一页面的一部分。您的数据已经可用于整个应用程序。呈现模板后,只会将HTML发送回浏览器。它不像每次请求都会发回数据,然后模板会在浏览器的一侧呈现。
答案 1 :(得分:0)
向所有页面发送数据不仅是必要的;这是危险的。你最终的情况看起来很像你在任何地方使用全局变量会发生的情况。
我不确定是否有更好的方法来做你想做的事情,所以我只是想告诉你我们做了什么。
我会在那里添加一个上下文变量,而不是扩展base_template,比如{{ message_area }}
。然后,我将该上下文变量设置为message_base模板上render()
的输出。例如:
base_template.render(Context({..., 'message_area': message_base.render(...)}))
这使得只有message_base应该关注本地化到message_base的数据。