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

也可以自定义上下文处理器,进行导入即可.

猜你喜欢

转载自blog.csdn.net/zhu6201976/article/details/83046946