django中context_processors的理解
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}}
也可以自定義上下文處理器,進行匯入即可.