您好,登錄后才能下訂單哦!
django使用session的方法?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
首先確認在 MIDDLEWARE_CLASSES中確保它包含'django.contrib.sessions.middleware.SessionMiddleware',如果不想使用session會話可以刪除這一項.
配置session引擎
默認情況下,django框架會將session數(shù)據(jù)存儲在數(shù)據(jù)庫(django框架中默認創(chuàng)建的model里有存儲session的model,這也是為什么在使用前需執(zhí)行創(chuàng)建數(shù)據(jù)庫操作的原因,使用django.contrib.sessions.models.Session模型)中。從數(shù)據(jù)庫相比其他存儲session的方式慢一點,所以可以配置django來存儲session到文件系統(tǒng)或者緩存中。
使用數(shù)據(jù)庫支持的session
如果你想用數(shù)據(jù)庫存儲session,需要添加'django.contrib.sessions' 到你的INSTALLED_APPS設(shè)置中。并且創(chuàng)建存儲session數(shù)據(jù)的表。
使用基于緩存的session
使用緩存存儲session,在性能上會比使用數(shù)據(jù)庫更快。
使用緩存來存儲session必須先進行配置緩存
缺點:本地內(nèi)存使用緩存不能長時間保留數(shù)據(jù),所以不是好的選擇,而且直接使用文件或者數(shù)據(jù)庫比文件或數(shù)據(jù)庫緩存速度快。本地緩存系統(tǒng)不是多進程安全的。
使用CACHES中可以定義多個緩存,Django使用默認緩存,若要用其他緩存,可以設(shè)置SESSIONCACHEALIAS為該緩存的名字
配置好緩存之后,有兩種緩存可供選擇
對于簡單的緩存session,可以設(shè)置SESSIONENGINE為'django.contrib.sessions.backends.cache',這正方式就是將數(shù)據(jù)緩存在內(nèi)存中,不做持久化存儲,如果緩存填滿或者緩存服務(wù)器重啟,緩存數(shù)據(jù)就可能會被清理掉
持久化數(shù)據(jù)緩存就要使用數(shù)據(jù)庫,設(shè)置SESSIONENGINE為'django.contrib.sessions.backends.cacheddb',在寫數(shù)據(jù)的時候使用緩存,讀取時先讀緩存中的數(shù)據(jù),如果緩存中數(shù)據(jù)被清理了,就從數(shù)據(jù)庫中讀取
兩種緩存方式都很快,簡單的更快一點,因為沒有做數(shù)據(jù)持久化
特殊說明:在1.7 版之前,cacheddb 永遠使用default緩存而不是SESSIONCACHEALIAS。
使用緩存例子:
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' SESSIONCACHEALIAS = 'default'#表示使用緩存的別名,在CACHES中尋找,下面有default和db1兩種選擇 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ '172.19.26.240:11211', '172.19.26.242:11211', ] }, 'db1': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ '172.19.26.240:11211', '172.19.26.242:11211', ] } }
附加內(nèi)容
CACHES的格式,默認: { 'default':{ 'BACKEND':'django.core.cache.backends.locmen.LocMemCache', } }
一個字典包含所有緩存要使用的設(shè)置它是一個嵌套字典,其內(nèi)容將高速緩存別名映射到包含單個高速緩存的選項的字典中。
CACHES設(shè)置必須配置‘default’緩存;還可以指定任何數(shù)量的附加高速緩存。如果您正在使用本地內(nèi)存高速緩存之外的其他高速緩存后端,或者需要定義多個高速緩存,這就需要添加其他高速緩存項。以下高速緩存選項可用。
BACKEND
默認值:''(空字符串)
要使用的緩存后端。內(nèi)置高速緩存后端是:
'django.core.cache.backends.db.DatabaseCache' 'django.core.cache.backends.dummy.DummyCache' 'django.core.cache.backends.filebased.FileBasedCache' 'django.core.cache.backends.locmem.LocMemCache' 'django.core.cache.backends.memcached.MemcachedCache' 'django.core.cache.backends.memcached.PyLibMCCache'
通過將BACKEND設(shè)置為緩存后端類的完全限定路徑(即mypackage.backends.whatever.WhateverCache),您可以使用未隨Django提供的緩存后端。 )。
基于文件的session
使用基于文件的session,使用SESSIONENGINE為'django.contrib.sessions.backends.file',使用SESSIONFILE_PATH設(shè)置文件的位置,如果不設(shè)會使用默認存儲位置為,它的默認值來自tempfile.gettempdir()的輸出,大部分情況是/tmp
使用基于Cookie的session
要使用基于Cookie 的會話,請設(shè)置SESSIONENGINE 為"django.contrib.sessions.backends.signedcookies"。此時,會話數(shù)據(jù)的存儲將使用Django 的加密簽名 工具和SECRET_KEY 設(shè)置。
建議保留SESSIONCOOKIEHTTPONLY 設(shè)置為True 以防止從JavaScript 中訪問存儲的數(shù)據(jù)。
感謝各位的閱讀!看完上述內(nèi)容,你們對django使用session的方法大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。