36.Django內容處理器
Django內容處理器
一個web頁面大致包含:導航、底部資訊欄、側欄、正文。正文和側欄變動比較大,但是導航和底部資訊欄基本是不變的 而且每個頁面都是有的,如果使用django的模版引擎,那麼在每個檢視中都要查詢一遍導航、底部資訊欄的資料, 這個很麻煩。Django體用了一個內容處理器(context_processor)幫助我們解決這個問題。
內容處理器有點像中介軟體一樣按順序執行給模版提供必要的資料來源。
內容處理器其實很簡單,就是一個普通的函式,然後註冊到setting中就可以了。
在工程目錄下建立一個processors.py,可以隨意取名。然後定義一個方法。
def global_setting(request): return { 'site_name': '第八個部落', 'site_description': '這是一個有趣的網站' }
開啟setting.py
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], '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', # 將我們寫的函式註冊到這個地方即可 'mysite.processors.global_setting', ], }, }, ]
這樣任何一個檢視函式給模版的引數中都會包含global_setting()返回的引數了,
可以在模版中使用。
<body> <div>站點名稱:{{ site_name }}</div> </body>