1. 程式人生 > >用戶登錄功能實現 | Django開發

用戶登錄功能實現 | Django開發

key code .get response 記錄 出錯 滿足 服務器 保持

處理登錄頁面
    # form表單中action對應url反向解析;
1.創建處理登錄頁面視圖,匹配url
        # 點擊登錄需要對數據進行校驗;
2.創建校驗數據函數
            # 檢測登陸參數是否合法
            def check_login_params(request):
                # 獲取表單數據
                user_name = post(request, user_name)
                user_pass = post(request, 
user_pass) # 對數據校驗 if not (5 <= len(user_name) <= 20): return False if not (8 <= len(user_pass) <= 20): return False # 檢測用戶是否存在 user = User.objects.user_by_name(user_name)
if not user: return False else: if user.user_pass == password_encryption(user_pass): return True else: return False
3.校驗成功後
        # 記錄用戶狀態;判斷是否需要記錄用戶名;
# 登錄失敗跳轉至登錄頁面;
            # 處理登陸
            def login_handle(request):

                # 1.對用戶名密碼做簡單校驗
                # 在fuction中定義一個校驗函數
                if check_login_params(request):
                    # 登陸成功後;
                    # 1.記錄用戶狀態
                    # 2.是否需要記錄用戶名
                else:
                    # 用戶登陸不成功
                    return redirect(reverse(user:login))
4.寫session記錄用戶狀態
            # 設置cookie
            # 服務器端在接收到瀏覽器請求之後,返回過程中將用戶名以鍵值對的形式寫到cookie中;
            # 通過參數max_age來設置過期時間為24小時;
            def set_cookie(response, key, value):
                response.set_cookie(key, value, max_age=60*60*24)

            # 獲取cookie
            # 瀏覽器帶著cookie對服務器再次發出請求,服務器端處理請求,
            # 獲取cookie中存有的用戶名的值,寫到html中返回給瀏覽器;
            # 傳入的第二個參數‘‘,是為了防止數據為空導致程序出錯,讓其返回一個空字符串;
            def get_cookie(request, key):
                return request.COOKIES.get(key, ‘‘)

            # 刪除cookie
            # 當服務器端處理完請求之後,想刪除cookie,就在返回的過程中把cookie刪除;
            def del_cookie(response, key):
                response.delete_cookie(key)

            # 設置session
            # 瀏覽器請求訪問,驗證成功之後,服務器端將用戶名跟密碼以鍵值對的方式存在session中,
            # session是存儲在服務器端的,工作形式是:
            # 在存儲的同時,生成一個sessionid標記每一個session,以鍵值對的形式存入一個cookie中,
            # 返回給瀏覽器;不標記session鬼知道是哪個瀏覽器訪問服務器存的值?
            def set_session(request, key, value):
                request.session[key] = value

            # 獲得session
            # 保持登錄狀態;
            # 在瀏覽器登陸驗證成功之後,進入登入狀態,服務器端返回登錄處理結果以及存有sessionid的cookie;
            # 馬上,瀏覽器就跳轉訪問首頁,再次發起請求,帶著這個cookie到服務器端,
            # 服務器端根據讀取的sessionid,將對應的session從數據庫中取出來,寫到html中返回給瀏覽器;
            def get_session(request, key):
                return request.session.get(key, ‘‘)

            # 刪除session
            # 在手動註銷登陸的時候刪除session;
            def del_session(request):
                request.session.flush()
        # 在用戶登錄成功在處理登錄的視圖中保留登錄狀態,並且因為勾選checkbox而保存用戶名;
            # 處理登錄
            # 在處理登入狀態中,先要對用戶名密碼做簡單的校驗處理,滿足條件,並且用戶名存在;
            # 就記錄登錄狀態,記錄用戶名;並返回到上一個頁面;
            def login_handle(request):
                # 1.對用戶名密碼做簡單校驗
                # 在fuction中定義一個校驗函數
                if check_login_params(request):
                    # 登陸成功後;
                    # 1.記錄用戶狀態
                    keep_user_online(request)
                    # 2.是否需要記錄用戶名
                    # 處理登錄之後要跳轉上一個頁面;
                    # response = redirect(get_redirect_url(request))
                    response = redirect(reverse(users:register))
                    remember_username(request, response)
                    return response
                else:
                    # 用戶登陸不成功
                    return redirect(reverse(users:login)) 

用戶登錄功能實現 | Django開發