Django的Context Processors的中文名字有很多种,有人翻译成文本处理器,也有人翻译成上下文处理器。小编最喜欢的翻译是全局上下文处理器,因为它的主要作用就是向模板传递需要全局使用的变量。今天小编就来带大家一起来看看这把利器,并教你如何自定义全局上下文处理器(Context Processors)。
什么情况下需要使用全局上下文处理器(Context Processors)?
当你需要向所有模板传递一个可以被全局使用的变量时。在编写Django视图函数时,我们一般会在视图函数中以Python字典(dict)形式向模板中传递需要被调用或使用的变量并指定渲染模板。通常情况下,我们向模板的传递的字典变量与模板是一一对应的关系。有时我们还需要向模板传递全局变量,即每个模板都需要使用到的变量(比如站点名称, 博客的最新文章列表)。如果每个视图函数分别去查询数据库,然后向每个模板传递这些变量,不仅造成代码冗余,而且会造成对数据库的重复查询。一个更好的解决方案就是使用自定义的上下文处理器(Context Processors)给模板传递全局变量,一次查询全局使用,完美解决了这些问题。
Django内置的全局上下文处理器(Context Processors)
你或许没有自定义过自己的全局上下文处理器(Context Processors),但你一定使用过Django内置的全局上下文处理器(Context Processors)。举个例子,虽然你没有向某个模板中传递过权限p