有时候我们需要所有页面都使用同一个变量,比如用户登录信息。那不可能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 }}调用该内容