1. 程式人生 > >django中context_processors的理解

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}}

也可以自定義上下文處理器,進行匯入即可.