1.是什么?字面理解:上下文处理器.
2.为什么?模板中,想使用request对象,则必须要求视图传递进来,每个模板都传递request是否造成大量代码冗余?是否可在settings文件中配置,让所有模板共用一个request全局变量?
可以,这类似于Flask框架中的g变量,config变量,request变量,模板中无需导入,就可直接使用的全局变量或特有变量.
3.怎么做?django settings文件中自带4个上下处理器,如下:
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages']
若想添加,可直接从django.template.context_processors导入常用函数:
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
"django.template.context_processors.i18n",
'django.template.context_processors.media',
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]
这样,模板中就可以直接使用debug,request,auth,messages,i18n等变量.{{request.user.username}}
也可以自定义上下文处理器,进行导入.