上下文处理器(Context Processor)

=======================================================================================

1.上下文处理器是个啥? && 它是干啥的?


  • 上下文处理器也称作上下文渲染器。但我更倾向于称其为处理,毕竟processor的翻译是“处理。”但是称为上下文渲染器也有道理,渲染更接近于使用场景。
  • Django中的Context Processor主要是应用于模板,完成页面的绘制的一些处理,也就是所说的页面渲染。
  • 而上下文,从计算机编程的角度来说——就是指环境。

也就是说,同一段处理程序对于不同的环境,反馈出不同的处理结果。

  • 借用网上的一个例子:用户访问站点的时候,站点的所有页面上都要能够显示这个用户自己的IP地址。

这样的功能,我们需要从请求(request)中获取到访问用户的IP地址,然后呈现到页面中。也许大家能够想到,我们可以在每个页面对应的视图函数中进行这个处理,但是未免太过麻烦。最好的方式是将处理过程定义一次,就能够在每个页面中使用。

此时,我们可以通过自定义一个上下文处理器帮助我们完成。

面对不同来源的用户通过同一个处理器完成页面上不同IP地址的渲染。

上下文处理器就是创建模板变量,但是与使用context传参有所不同。使用上下文处理器可以给每一个模板都提供相同的变量(即一次性将制定变量传给所有模板,让每个模板都可以使用)

2.来看一看Django中的上下文配置项


在settings.py中,包含了当前使用的上下文处理器。他的作用是可以给每一个模板都提供相同的变量。


3.自定义上下文处理器 && 使用