Django动态嵌套模板

时间:2014-03-28 20:39:13

标签: django django-templates

我有一个名为message_base的基本模板,它扩展了主基本模板,我需要在message_base中显示一个动态菜单...现在我知道我可以使用模板上下文处理器,但我想知道是否有任何方法限制数据只能从message_base及其子页面访问,而不是整个应用程序,因为我认为在每个请求中向所有页面发送数据都是不必要的。

由于

2 个答案:

答案 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的数据。