Django4.0 使用會(huì)話-當(dāng)保存會(huì)話時(shí)

2022-03-16 18:00 更新

默認(rèn)情況下,Django 只在會(huì)話被修改后才會(huì)向會(huì)話數(shù)據(jù)庫保存會(huì)話——也就是說,是否已經(jīng)分配或刪除了它的任何字典值:

# Session is modified.
request.session['foo'] = 'bar'

# Session is modified.
del request.session['foo']

# Session is modified.
request.session['foo'] = {}

# Gotcha: Session is NOT modified, because this alters
# request.session['foo'] instead of request.session.
request.session['foo']['bar'] = 'baz'

在上面例子的最后一個(gè)例子中,我們可以通過在會(huì)話對象上設(shè)置 ?modified ?屬性來明確地告訴會(huì)話對象它已經(jīng)被修改:

request.session.modified = True

要想改變這個(gè)默認(rèn)行為,可以設(shè)置 ?SESSION_SAVE_EVERY_REQUEST ?為 ?True ?。當(dāng)設(shè)置為 ?True ?時(shí),Django 會(huì)根據(jù)每個(gè)請求將會(huì)話保存到數(shù)據(jù)庫中。
注意,僅在會(huì)話被創(chuàng)建或修改時(shí)發(fā)送會(huì)話 ?cookie ?。如果 ?SESSION_SAVE_EVERY_REQUEST ?為 ?True ?,則會(huì)話cookie將在每次請求時(shí)發(fā)送。
同樣地,每次發(fā)送會(huì)話 cookie 時(shí)都會(huì)更新會(huì)話 cookie 的 ?expires ?部分。
如果響應(yīng)狀態(tài)代碼為 500,會(huì)話不會(huì)被保存。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)