需求介紹:
所有頁面需要檢測用戶是否登陸,並渲染 登錄|注冊 或是用戶名。
動手寫個上下文渲染器
1.項目路徑
zqxt ├── blog │ ├── __init__.py │ ├── admin.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py ├── manage.py └── zqxt ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py
2.在 zqxt/zqxt/ 這個目錄下(與settings.py 在一起)新建一個 context_processor.py
from django.conf import settings as original_settings def settings(request): return {'settings': original_settings} def ip_address(request): return {'ip_address': request.META['REMOTE_ADDR']}
3.我們把新建的兩個 上下文渲染器 加入到 settings.py 中
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], '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', 'zqxt.context_processor.settings', 'zqxt.context_processor.ip_address', ], }, }, ]
我們僅需在模板中使用這些context中的變量即可。我們在view中的context並不會被影響到,但使用上下文渲染器將會導致緩存優化困難的問題。