Django4.0 使用會話-當保存會話時

2022-03-16 18:00 更新

默認情況下,Django 只在會話被修改后才會向會話數(shù)據(jù)庫保存會話——也就是說,是否已經(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'

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

request.session.modified = True

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號