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