Django - session 會話跟蹤技術
阿新 • • 發佈:2018-11-19
1、session簡介
|session 英 /'seʃ(ə)n/ 美 /'sɛʃən/
基於cookies開發,將值存到服務端
寫session
讀session
Session是伺服器端技術,利用這個技術,伺服器在執行時可以 為每一個使用者的瀏覽器建立一個其獨享的session物件,由於 session為使用者瀏覽器獨享,
所以使用者在訪問伺服器的web資源時 ,可以把各自的資料放在各自的session中,當用戶再去訪問該伺服器中的其它web資源時,其它web資源再從使用者
各自的session中 取出資料為使用者服務。
session之儲存登入狀態資訊
views.py
from django.shortcuts import render,HttpResponse,redirect # Create your views here. from app01.models import UserInfodef login_session(request): if request.method == 'POST': username = request.POST.get('user') pwd = request.POST.get('pwd') user = UserInfo.objects.filter(username=username, password=pwd).first() ''' 1 生成隨機字串 adcadc2323 2 response.set_cookie('sessionid',adcadc2323) 3 在django-session表中建立一條記錄 session-key session-data adcadc2323 {'is_login':True,'username':'yuan'}''' if user: request.session['is_login']=True request.session['username']='yuan' return HttpResponse('登入成功') return render(request,'login.html') def index_session(request): is_login = request.session['is_login'] username = request.session['username'] ''' 1 request.COOKIE.get("session") # ltv8zy1kh5lxj1if1fcs2pqwodumr45t 2 django-session表中過濾紀錄: 在django—session表中建立一條記錄: session-key session-data ltv8zy1kh5lxj1if1fcs2pqwodumr45t {"is_login":True,"username":"yuan"} obj=django—session.objects .filter(session-key=ltv8zy1kh5lxj1if1fcs2pqwodumr45t).first() 3 obj.session-data.get("is_login") ''' is_login = request.session.get("is_login") if not is_login: return redirect("/login_session/") username = request.session.get("username") last_visit_time = request.session.get("last_visit_time") return render(request, "index.html", {"username": username, "last_visit_time": last_visit_time})
不同瀏覽器,會建立不同的session_id