看到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】。
анонимный чат – гостевой чат, чат.