Django 上下文管理器,为父模板添加动态数据

1.摘要:模板继承能够减小页面内容的重复定义,实现页面内容的重用。django

可是当父模板中有动态数据的话,这些动态数据在子模版中是不会显示的。咱们能够经过自定义上下文处理器来解决api

 

2.Django上下文处理器(Context Processor)app

上下文处理器是接收HttpRequest为参数并返回dict形式的数据的函数。它的主要用途是将全部模板共享的公共数据添加到上下文中,从而没必要在每一个视图中重复定义。函数

在settings.py文件中内置了多个上下文处理器:ui

 1 TEMPLATES = [
 2     {
 3         'BACKEND': 'django.template.backends.django.DjangoTemplates',
 4         'DIRS': [os.path.join(BASE_DIR, 'templates')],
 5         'APP_DIRS': True,
 6         'OPTIONS': {
 7             # 上下文处理器:context_processors
 8             'context_processors': [
 9                 'django.template.context_processors.debug',
10                 'django.template.context_processors.request',
11                 'django.contrib.auth.context_processors.auth',
12                 'django.contrib.messages.context_processors.messages',
13                 'django.template.context_processors.media',
14             ],
15         },
16     },
17 ]

每一个内置处理器的功能可查看官方文档:https://docs.djangoproject.com/zh-hans/2.1/ref/templates/api/#built-in-template-context-processorsspa

 

3.开始动手,定义本身的上下文处理器debug

   3.1.在相应的app下新建py文件,如context_processors.pycode

 

 

   3.2.定义一个函数如navigation_bar,接收request参数。blog

 

 

 

   3.3.将自定义的上下文处理器添加到settings.py文件中继承

 

 

   3.4.模板中的使用

 

原文地址:http://www.caodahua.cn/detail/3/

相关文章
相关标签/搜索