【发布时间】:2015-03-11 08:41:36
【问题描述】:
我有一个 Django 项目,其中有 4 个应用程序。我可以使用自定义处理器(当然每个应用程序都有自己的上下文处理器)将应用程序级别的公共变量传递给模板。但是,当我需要将相同的上下文变量传递给所有应用程序中的所有模板(所有应用程序共有的变量)时,我只是将这些上下文变量分别添加到每个上下文处理器中。有没有其他方法可以将上下文变量传递给所有应用程序中的所有模板,而无需将其添加到每个上下文处理器?
【问题讨论】:
我有一个 Django 项目,其中有 4 个应用程序。我可以使用自定义处理器(当然每个应用程序都有自己的上下文处理器)将应用程序级别的公共变量传递给模板。但是,当我需要将相同的上下文变量传递给所有应用程序中的所有模板(所有应用程序共有的变量)时,我只是将这些上下文变量分别添加到每个上下文处理器中。有没有其他方法可以将上下文变量传递给所有应用程序中的所有模板,而无需将其添加到每个上下文处理器?
【问题讨论】:
嗯,当上下文处理器将变量引入上下文时,该变量在所有项目的模板中都可用。
因此您无需为每个上下文处理器添加变量,单个处理器即可完成工作。
【讨论】:
request并返回一个dict的变量。它可以放在任何地方。您唯一应该做的就是为 TEMPLATE_CONTEXT_PROCESSORS 设置提供有效的模块/函数名称。
settings.py一起放在projectname/context_processors.py文件中。然后将projectname.context_processors.my_processor 添加到TEMPLATE_CONTEXT_PROCESSORS。