什么是上下文处理器

上下文处理器是可以返回一些数据,在全局模板中都可以使用。比如登录后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象。

自定义上下文处理器

你可以根据这个上下文处理器是属于哪个app,然后在这个app中创建一个文件专门用来存储上下文处理器。或者是你也可以专门创建一个Python包,用来存储所有的上下文处理器。

这里我是专门创建一个Python包:context_processors.py。

用我们的个人博客讲解,title和导航是需要共用的,编写我们的上下文处理器,也就是一个函数。

def nav_title_process(request):
    '''上下文管理器,这个函数里面返回的每个变量,在每个页面里面都可以用'''
    navs = ['我的相册','我的日记','python','接口测试']
    title = '我的个人博客'
    content = {'daohang':navs,'title':title,}
    return content

编写好这个函数之后,我们还需要在settings.py的TEMPLATES中去将我们的上下文处理器添加进去。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',

                # app名.上下文处理器的文件名.上下处理器的函数名
                'testDjango.context_processors.nav_title_process'
            ],
        },
    },
]

这样,我们就定义好了我们自己的上下文处理器。

定义好了我们的上下文处理器之后,我们就可以直接在前端使用了,在views中也不用编写相关的代码了。

 本文转载自

https://blog.csdn.net/xujin0/article/details/84796149 

01-07 13:38