什么是上下文处理器
上下文处理器是可以返回一些数据,在全局模板中都可以使用。比如登录后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象。
自定义上下文处理器
你可以根据这个上下文处理器是属于哪个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中也不用编写相关的代码了。
本文转载自