通過例子理解Django的session機(jī)制

Django官方文檔寫到:

Django 提供對匿名會話(session)的完全支持。這個會話框架讓你可以存儲和取回每個站點(diǎn)訪客任意數(shù)據(jù)路召。它在服務(wù)器端存儲數(shù)據(jù), 并以cookies的形式進(jìn)行發(fā)送和接受數(shù)據(jù)。

下面通過例子理解

第一步敞贡,啟動SESSION

檢查settings.py文件兩個地方

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions', #第一個地方类茂,默認(rèn)開啟
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware', #第二個地方屑墨,默認(rèn)開啟
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

第二步夹纫,配置數(shù)據(jù)庫

同樣是在settings.py文件中

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'accountApp',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': 3306,
    }
}

運(yùn)行遷移减俏,python manage.py migrate
這時,查看數(shù)據(jù)庫可以看到名為django_session的表串塑。

Snipaste_2019-11-12_20-05-30.png

第三步沼琉,編寫視圖函數(shù)和url配置器

# myapp/views.py
def login(request):
        if request.session.get('username', None) == '123456':
            return HTTPResponse('登錄成功')
        else:
            request.session['username'] = '123456'
            return HTTPResponse('請登錄')
# myapp/urls.py
urlpatterns = [
    path('u/login/', views.login),
]

第四步,測試

我們使用httpie工具訪問接口

Snipaste_2019-11-12_20-04-39.png

注意響應(yīng)頭中有Set-Cookie: sessionid=oe5c4tclsvq7pn071jnak7481lgqomdp; expires=Tue, 26 Nov 2019 11:42:13 GMT; Max-Age=1209600; Path=/; SameSite=Lax
再來看看數(shù)據(jù)庫中的表**django_session

Snipaste_2019-11-12_19-55-34.png

可以發(fā)現(xiàn)session_key和sessionid是一樣的桩匪。

在django中打瘪,HttpRequest.session是一個字典對象,我們可以對他多次編輯傻昙,django會自動加密并通過set-cookie響應(yīng)頭返回給瀏覽器闺骚,同時保存到django_session數(shù)據(jù)庫中。這時妆档,瀏覽器需將set-cookie的內(nèi)容保存到cookie中并在下一次請求發(fā)送給服務(wù)端僻爽。

使用httpie工具模擬瀏覽器再一次發(fā)送請求并附帶cookie


Snipaste_2019-11-12_20-03-45.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贾惦,隨后出現(xiàn)的幾起案子进泼,更是在濱河造成了極大的恐慌,老刑警劉巖纤虽,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绞惦,居然都是意外死亡逼纸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門济蝉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杰刽,“玉大人,你說我怎么就攤上這事王滤『厣” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵雁乡,是天一觀的道長第喳。 經(jīng)常有香客問我,道長踱稍,這世上最難降的妖魔是什么曲饱? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任悠抹,我火速辦了婚禮,結(jié)果婚禮上扩淀,老公的妹妹穿的比我還像新娘楔敌。我一直安慰自己,他們只是感情好驻谆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布卵凑。 她就那樣靜靜地躺著,像睡著了一般胜臊。 火紅的嫁衣襯著肌膚如雪勺卢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天区端,我揣著相機(jī)與錄音值漫,去河邊找鬼。 笑死织盼,一個胖子當(dāng)著我的面吹牛杨何,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沥邻,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼危虱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了唐全?” 一聲冷哼從身側(cè)響起埃跷,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邮利,沒想到半個月后弥雹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡延届,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年剪勿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片方庭。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡厕吉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出械念,到底是詐尸還是另有隱情头朱,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布龄减,位于F島的核電站项钮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寄纵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一鳖敷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧程拭,春花似錦定踱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恤浪,卻和暖如春畅哑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背水由。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工荠呐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砂客。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓泥张,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鞠值。 傳聞我的和親對象是個殘疾皇子媚创,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容