Django添加自定义TEMPLATE_CONTEXT_PROCESSOR

django创建自定义的template_context_processor而不用更改global settings的方法,

看到the django book第九章里关于template_context_processor,有些内容太老,也没有给出自定义template_context_processor实例,所以写了一个总结。

创建一个context processor函数

新建一个文件命名为context_processors.py,把它和项目的settings文件放在一个文件夹内,添加一个返回字典的函数,其代码如下:

#context_processors.py
def foos(request): 
    context = {'FOO': 'context processor test:foos'}
    return context

修改 settings 文件

打开项目的settings.py文件,添加如下代码:

#settings.py【1】
#这里用import,目的是为了不修改global_settings文件,只修改本地配置文件
from django.conf import global_settings

#添加自定义的处理函数
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + ( "mysite.context_processors.foos", )

说一下上面的代码,+后面的元组可以添加多个自定义的处理函数,如果只有一个别忘了后面的逗号。

在views中调用

views中函数的return有两种写法,一种是render,一种是render_to_response,这里推荐render而不是render_to_response【2】,因为render_to_response必须要使用这个参数context_instance=RequestContext(request)才能使用默认的template_context_processors。

模板中添加自定义的变量

在要测试的模板里添加{{FOO}},访问的时候就会变成我们赋予其的值了。

由于在TEMPLATE_CONTEXT_PROCESSORS添加的函数在settings里,即使你不调用它,所有的views都自动调用它,可能会带来性能影响,请酌情使用【3】

One thought on “Django添加自定义TEMPLATE_CONTEXT_PROCESSOR”

Leave a Reply

Your email address will not be published. Required fields are marked *