session【关闭浏览器session失效】安全型较高
1. 在settings.py中添加
SESSION_ENGINE='django.contrib.sessions.backends.db'
2. settins.py中的MIDDLEWARE 中确保没有注释
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
]
3. settins.py中的INSTALLED_APPS 中确保没有注释
INSTALLED_APPS = [
'django.contrib.sessions',
]
1. 在settings中添加
SESSION_ENGINE='django.contrib.sessions.backends.cache'
2. settins.py中的MIDDLEWARE 中确保没有注释
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
]
建立三个path分别对应【登录退出页面(index),登录页面(fform),退出操作(tuichu)】
从浏览器输入【127.0.0.1:8000/index/】默认使用的是GET方法,从表单传递过来的是POST【method=’post‘】
def index(request):#主页面展示登录|退出
if request.method == 'POST':
'''从表单获取数据'''
request.session['name']=request.POST.get('name')
request.session['pwd']=request.POST.get('pwd')
print(request.session['name'], request.session['pwd'])
'''用户是张三且密码是123才算登录成功'''
if(request.session['name'] == '张三')and(request.session['pwd'] == '123'):
return render(request,'index.html')
else:
request.session['mes']='error!'
return redirect("/fform/")
request.session['mes']=''
return render(request, 'index.html')
设置了session['mes']=''【在fform判断是否正确,或者匹配成功后删除此session】,执行index.html页面,name为空执行else的语句
登录|退出
{% if request.session.name != None %}
欢迎:{{ request.session.name }} | 退出
{% else %}
登录 | 退出
{% endif %}
点击登录,跳转到登录页面(/fform/),进入froms.html页面
def fform(request):
return render(request,'forms.html')
从index页面获取的mes为空不打印,然后提交使用post请求跳转到登录页面,登录页面获取提交的数据并存入session中【密码可以不存】,由其判断name与pwd是否符合预期值,若符合则进入index.html,若不符合则设置session['mes']并跳转回登录页面,此时的mes不为空,打印其值,【字体设置为红色】
删除session的name【session['name']失效,即name为空】,并返回登录退出页面
def tuichu(request):
del request.session['name']
del request.session['pwd']
return redirect('/index/')