【问题标题】:Django context processors and a Django project with mulitple applicationsDjango 上下文处理器和具有多个应用程序的 Django 项目
【发布时间】:2015-03-11 08:41:36
【问题描述】:

我有一个 Django 项目,其中有 4 个应用程序。我可以使用自定义处理器(当然每个应用程序都有自己的上下文处理器)将应用程序级别的公共变量传递给模板。但是,当我需要将相同的上下文变量传递给所有应用程序中的所有模板(所有应用程序共有的变量)时,我只是将这些上下文变量分别添加到每个上下文处理器中。有没有其他方法可以将上下文变量传递给所有应用程序中的所有模板,而无需将其添加到每个上下文处理器?

【问题讨论】:

    标签: python django


    【解决方案1】:

    嗯,当上下文处理器将变量引入上下文时,该变量在所有项目的模板中都可用。

    因此您无需为每个上下文处理器添加变量,单个处理器即可完成工作。

    【讨论】:

    • 我尝试将上下文处理器文件放在项目文件夹的根级别,然后我只能在默认应用程序模板中看到变量值,在其他情况下我看不到值。我是不是放错地方了。
    • 上下文处理器是一个普通的python函数,它接受request并返回一个dict的变量。它可以放在任何地方。您唯一应该做的就是为 TEMPLATE_CONTEXT_PROCESSORS 设置提供有效的模块/函数名称。
    • 通常我将项目范围的上下文处理器与settings.py一起放在projectname/context_processors.py文件中。然后将projectname.context_processors.my_processor 添加到TEMPLATE_CONTEXT_PROCESSORS
    • 谢谢,这是我的错误。问题是我在大多数视图响应中都没有返回请求上下文,而只是使用这些视图进行测试。
    猜你喜欢
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2012-09-26
    • 2011-08-31
    • 2013-09-02
    相关资源
    最近更新 更多