booktest24-裝飾器

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章