Django 上下文管理器,爲父模板添加動態數據

1.摘要:模板繼承可以減少頁面內容的重複定義,實現頁面內容的重用。

但是當父模板中有動態數據的話,這些動態數據在子模版中是不會顯示的。我們可以通過自定義上下文處理器來解決

 

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

上下文處理器是接收HttpRequest爲參數並返回dict形式的數據的函數。它的主要用途是將所有模板共享的公共數據添加到上下文中,從而不必在每個視圖中重複定義。

在settings.py文件中內置了多個上下文處理器:

 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-processors

 

3.開始動手,定義自己的上下文處理器

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

 

 

   3.2.定義一個函數如navigation_bar,接收request參數。

 

 

 

   3.3.將自定義的上下文處理器添加到settings.py文件中

 

 

   3.4.模板中的使用

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章