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.模板中的使用