1.修改login,login_check视图函数,当已经登陆成功,直接重定向到change_pwd.html
def login(request):
if request.session.has_key('islogin'):
return redirect('/change_pwd')
else:
if 'username' in request.COOKIES:
username = request.COOKIES['username']
else:
username = ''
return render(request, 'booktest/login.html',{'username':username})
def login_check(request):
username = request.POST.get('username')
password = request.POST.get('password')
remember=request.POST.get('remember')
print(remember)
# print(username + ":" + password)
if username == 'admin' and password == '111':
response = redirect('/change_pwd')
if remember=='on':
response.set_cookie('username',username,max_age=7*24*3600)
# 只要有islogin,表示用户已经登陆,值无所谓
request.session['islogin']=True
request.session['username']=username
return response
else:
return redirect('/login')
2.定义登陆装饰器
def login_required(view_func):
def wrapper(request,*view_args,**view_kwargs):
if request.session.has_key('islogin'):
return view_func(request,*view_args,**view_kwargs)
else:
return redirect('/login')
return wrapper
3.在必须登陆后才能访问的视图函数签名添加装饰器
@login_required
def change_pwd(request):
return render(request,'booktest/change_pwd.html')
@login_required
def change_pwd_action(request):
pwd = request.POST.get('pwd')
username = request.session.get('username')
return HttpResponse('%s将密码改为%s'%(username,pwd))
4.change_pwd.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>修改密码页面</title>
</head>
<body>
<form method="post" action="/change_pwd_action">
新密码:<input type="password" name="pwd">
<input type="submit" value="确认修改">
</form>
</body>
</html>
5.url
url(r'^change_pwd$', views.change_pwd),
url(r'^change_pwd_action$', views.change_pwd_action),
6.验证,当访问change_pwd和change_pwd_action时候,自动跳转到login