需求介紹:
所有頁面需要檢測用戶是否登陸,並渲染 登錄|注冊 或是用戶名。
動手寫個上下文渲染器
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並不會被影響到,但使用上下文渲染器將會導致緩存優化困難的問題。
