Django上下文管理器
Django的前端页面的数据是从数据库获取的,如果有多个html页面的数据是相同的话,在views.py文件里面定义的多个函数中就需要多次从数据库中获取相同的数据,如果每个view都需要返回同样的数据,那么就需要考虑上下文管理器
结构:上下文管理器文件名一般为context_processors.py,def xx(request) 为一个自定义函数,必要参数request,将里面的内容以字典的形式返回给所有模板,模板通过 {{ key }}取值。
from . import models
def process_category(request):
print('上下文管理器里面')
categories = models.Category.objects.all()
return {'categories':categories}
配置:它需要被配置在 settings里
提示:在django的上下管理器中,尽量不要写太重量级的代码,因为上下文渲染器的中代码,每一次请求都会执行一次,如果这个渲染器过重,会非常影响性能
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')], #指的是Django寻找html模板的目录
'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',
'user.content_processors.process_category', # 上下文管理器
], },},]