Django框架之Cookie和Session元件

2022-08-24 02:21:11 字數 3691 閱讀 3576

cookie是伺服器傳送到使用者瀏覽器並儲存在本地的一小塊資料,它會在瀏覽器下次向同一伺服器再發起請求時被攜帶併發送到伺服器上。通常,它用於告知服務端兩個請求是否來自同一瀏覽器,如保持使用者的登入狀態。cookie 使基於無狀態的 http 協議記錄穩定的狀態資訊成為了可能。

(1)會話狀態管理(如使用者登入狀態、購物車、遊戲分數或其它需要記錄的資訊)

(2)個性化設定(如使用者自定義設定、主題等)

(3)瀏覽器行為跟蹤(如跟蹤分析使用者行為等)

def

login(request):

if request.method == '

post':

username = request.post.get('

username')

password = request.post.get('

password')

if username == '

jason

'and password == '

123'

: old_path = request.get.get('

next')

ifold_path:

#重定向上次訪問的頁面

obj =redirect(old_path)

else

: obj = redirect('

/home/')

#登入成功 瀏覽器設定cookie,

#obj.set_cookie('name','jason',expires=7*24*3600)

obj.set_cookie('

name

','jason

',max_age=5)

return

obj

return render(request,'

login.html')

from functools import

wraps

deflogin_auth(func):        # 登入裝飾器

@wraps(func)

def inner(request,*args,**kwargs):

#獲取當前訪問路徑

old_path =request.get_full_path()

#校驗cookie

if request.cookies.get('

name'):

return func(request,*args,**kwargs)

#在登入路徑後拼接當前路徑(在登入成功後可返回當前)

我是index頁面,只有登入了才能看')

我是home頁面,只有登入了才能看

')

session 代表著伺服器和客戶端一次會話的過程。session 物件儲存特定使用者會話所需的屬性及配置資訊。這樣,當使用者在應用程式的 web 頁之間跳轉時,儲存在 session 物件中的變數將不會丟失,而是在整個使用者會話中一直存在下去。當客戶端關閉會話,或者 session 超時失效時會話結束。

獲取、設定、刪除session中資料request.session['k1']

request.session.get('k1',none)

request.session['k1'] = 123

request.session.setdefault('k1',123) # 存在則不設定

del request.session['k1']

刪除當前會話的所有session資料request.session.delete()刪除當前的會話資料並刪除會話的cookie。request.session.flush()
設定會話session和cookie的超時時間request.session.set_expiry(value)

from django.views import

view

from django.utils.decorators import

method_decorator

deflogin(request):

if request.method =='

post':

username = request.post.get('

username')

password = request.post.get('

password')

if username=='

jason

'and password=='

123'

:

#設定session

request.session['

name

'] = '

jason

'return redirect('

/home/')

return render(request,'

login.html')

#基於session的登入裝飾器

from functools import

wraps

deflogin_auth(func):

@wraps(func)

def inner(request,*args,**kwargs):

if request.session.get('

name'):

return func(request,*args,**kwargs)

return redirect('

/login/')

return

inner

#給cbv加裝飾器的三種方式

#@method_decorator(login_auth,name='get') (第一種)

class

mycls(view):

@method_decorator(login_auth) (第三種)

def dispatch(self, request, *args, **kwargs):

super().dispatch(self, request, *args, **kwargs)

#@method_decorator(login_auth) (第二種)

')

基於session給cvb加裝飾器

Django篇之設定cookie

1.所有cookie的獲取 def test1 request cookies request.cookies2.根據cookie的名獲取指定的cookie def test2 request cookie request.cookies.get cookiename 3.1設定cookie def...

django框架之安裝

我們安裝的是django 1.11.14 版本 我們先用pycham先裝 files選單欄下選擇setting,然後再找project下的直譯器project interpreter,然後點選右邊的加號按鈕,在搜尋框中搜尋django,選擇版本,雙擊安裝。看圖 然後再介紹用pip安裝 開啟cmd,在...

Django之元件 cookie與session

cookie 由伺服器產生,存放在客戶端瀏覽器上的鍵值對。設定值 取值 request.cookies.get key request.cookies key 刪除值 session 儲存在伺服器上的鍵值對。設定值 request.session key value request.session ...