有時候我們需要所有頁面都使用同一個變量,比如用戶登錄信息。那不可能render每一個頁面時都去傳遞一個變量,會非常麻煩
而用session可以解決這個問題
web的session可以通過request.session返回,返回結果是一個字典
第一步:通過視圖修改session中自定義key的內容
比如我增加一個username字段
在webManage下新建一個叫做context_processor的文件,然后添加下面的內容
def username(request):
return {'username': request.session.get('username', "Guest")}
該方法返回了請求的session中的username值,如果沒有賦值Guest
如果想直接給他賦值,直接用request.session[“username"]=xxx即可
第二步:修改settings.py文件,增加剛創建的方法
在TEMPLATES->OPTIONS->context_processors下增加剛剛添加的方法(頁面.方法)
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',
'webManage.context_processor.username'
],
},
},
{
'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',
'webManage.context_processor.username'
],
},
},
]
第三步:調用創建的方法
views視圖中直接使用username就可以獲得定義的username方法的返回值
在html中使用{{ username }}調用該內容