Django進階之session

Django進階之session

基于cookie做用戶驗證時:敏感信息不適合放在cookie中

session依賴cookie

session原理

cookie是保存在用戶瀏覽器端的鍵值對

session是保存在服務器端的鍵值對

?

session服務端中存在的數據為:

復制代碼
session = {隨機字符串1:{用戶1的相關信息}隨機字符串2:{用戶2的相關信息}}
復制代碼

session客戶端即客戶端的瀏覽器的cookie中存的數據是當前用戶對應的隨機字符串

session的工作過程

1、??? 生成隨機字符串

2、??? 寫到用戶瀏覽器的cookie中

3、??? 保存到session中

4、??? 在隨機字符串對應的字典中設置相關內容

而上述過程在Django中的體現為:

request.session["username"]=user

這里的username為通過request.POST.get("username")從前端html頁面中獲取到的用戶名信息

注意:

在Django中要用session中一定要先執行:

python manage.py makemigrations

python manage.py migrate

?

當用戶登錄的時候的就會在數據庫的django_session表中記錄session信息

?

同樣的通過request.session["username"]也可以獲取相應的值

在這個過程中:

1、??? 首先獲取當前用戶的隨機字符串

2、??? 根據隨機字符串獲取對應的內容

?

session的操作

?

request.session["k1"]? 如果不存在則會報錯

request.session.get["k1"],如果不存在則會報錯,為了防止出錯可以request.session.get('k1',none)

?

request.session['k1'] = 123 設置session值

request.session.setdefault('k1',123) ?存在則不設置

del request.session['k1']? 刪除

request.session.clear()??? 刪除

?

所有 鍵、值、鍵值對

request.session.keys()

request.session.values()

request.session.items()

request.session.iterkeys()

request.session.itervalues()

request.session.iteritems()

?

用戶session的隨機字符串

request.session.session_key

?

將所有Session失效日期小于當前日期的數據刪除

request.session.clear_expired()

?

檢查 用戶session的隨機字符串 在數據庫中是否

request.session.exists("session_key")

?

刪除當前用戶的所有Session數據

request.session.delete("session_key")

?

request.session.set_expiry(value)

默認的過期時間是兩周,如果自己設置了過期時間,這樣自己設定的優先級就會高于默認的

如果value是個整數,session會在些秒數后失效。

如果value是個datatime或timedelta,session就會在這個時間后失效。

如果value是0,用戶關閉瀏覽器session就會失效。

如果value是None,session會依賴全局session失效策略。

?

配置setting.py

SESSION_COOKIE_NAME = "sessionid"????? # Session的cookie保存在瀏覽器上時的key,即:sessionid=隨機字符串(默認)

SESSION_COOKIE_PATH = "/"??????????? ??# Session的cookie保存的路徑(默認)

SESSION_COOKIE_DOMAIN = None???????????? # Session的cookie保存的域名(默認)

SESSION_COOKIE_SECURE = False????????? # 是否Https傳輸cookie(默認)

SESSION_COOKIE_HTTPONLY = True???????? # 是否Session的cookie只支持http傳輸(默認)

SESSION_COOKIE_AGE = 1209600???????????? # Session的cookie失效日期(2周)(默認)

SESSION_EXPIRE_AT_BROWSER_CLOSE = False??? # 是否關閉瀏覽器使得Session過期(默認)

SESSION_SAVE_EVERY_REQUEST = False??????? # 是否每次請求都保存Session,默認修改之后才保存(默認)

?

Django中對于session的存儲方式

Django中支持session,其中內部提供了5種類型的session供開發者使用:

數據庫(默認)

緩存

文件

緩存+數據庫

加密cookie

1、如果是數據庫,需要在settings.py中配置如下:

SESSION_ENGINE = 'django.contrib.sessions.backends.db' (引擎(默認))

2、如果是緩存session,需要在settings.py中配置如下:

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'(引擎)

SESSION_CACHE_ALIAS= 'default' ?使用的緩存別名(默認內存緩存,也可以是memcache),此處別名依賴緩存的設置

1、??? 如果是文件session, 需要在settings.py中配置如下:

SESSION_ENGINE = 'django.contrib.sessions.backends.file' (引擎)

SESSION_FILE_PATH=None? 緩存文件路徑,如果為None,則使用tempfile模塊獲取一個臨時地址tempfile.gettempdir()???

2、??? 如果是緩存+數據庫session,需要在settings.py中配置如下:

SESSION_ENGINE='django.contrib.sessions.backends.cached_db'?????? (引擎)

?

來源于:昵稱:python修行路

轉載于:https://www.cnblogs.com/sjy18039225956/p/9212759.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280056.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280056.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280056.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Facebook開源 PyTorch版 fairseq,準確性最高、速度比循環神經網絡快9倍

今年5月,Facebook AI研究院(FAIR)發表了他們的研究成果fairseq,在fairseq中,他們使用了一種新型的卷積神經網絡來做語言翻譯,比循環神經網絡的速度快了9倍,而且準確性也是現有模型中最高的。此外…

推薦一個開源的現代化的 PDF 生成組件

你好,這里是 Dotnet 工具箱,定期分享 Dotnet 有趣,實用的工具和組件,希望對您有用!前言QuestPDF 是一個開源免費的 .NET 組件庫,可以用來生成 PDF 文檔。在 Github 上有4千多的 Star。項目充分考慮了 PDF 文…

小程序調用阿里云身份證識別OCR(附帶七牛云上傳圖片)

寫在前面&#xff1a;實現的邏輯是拍照上傳調用后端封裝好的身份證接口&#xff0c;然后同時調用七牛云接口把照片傳過去以便后臺管理系統審核看1:首選需要這么一張頁面接下來就寫我是怎么做的首先是布局&#xff08;以下是wxml&#xff09; <view><view classidcard&…

windows 安裝yaml支持和pytest支持等

打開cmd 輸入pip install pyyaml #yaml文件支持 輸入pip install pytest #pytest框架支持 輸入pip install requests #requests接口測試支持 輸入pip install pyopenssl #openssl支持 前提是電腦上的python已經配置好了轉載于:https://www.cnblogs.com/mghhzAnne/p/92…

史上最好記的神經網絡結構速記表(上)

本文講的是史上最好記的神經網絡結構速記表&#xff08;上&#xff09;&#xff0c;新的神經網絡結構不斷涌現&#xff0c;我們很難一一掌握。哪怕一開始只是記住所有的簡稱&#xff08; DCIGN&#xff0c;BiLSTM&#xff0c;DCGAN &#xff09;&#xff0c;也會讓同學們吃不消…

厚積薄發,微軟OFFICE云時代宏腳本來臨,Excel Srcipt已經推進到桌面端可用

前一陣子&#xff0c;已經發現微軟在Excel上發布了Office Script For Excel&#xff0c;當時只能在網頁端的Excel上使用&#xff0c;今天打開桌面端的Excel&#xff0c;發現多了一個【自動執行】選項卡。再一次看了下&#xff0c;比起以前的Office Addin&#xff0c;要先進得多…

如何使用Amazon Echo控制您的Eero Wi-Fi網絡

Thanks to the power of Alexa and its open API, you’re able to control a vast number of devices using just your voice. If you have an Eero Wi-Fi system, you can even control your home network with the Amazon Echo. 得益于Alexa的強大功能及其開放的API&#xf…

H5在WebView上開發小結

背景 來自我司業務方要求&#xff0c;需開發一款APP。但由于時間限制&#xff0c;只能采取套殼app方式&#xff0c;即原生app內嵌webview展示前端頁面。本文主要記述JavaScript與原生app間通信&#xff0c;以及內嵌webview開發時&#xff0c;前端方面可能踩的一些坑。 技術架構…

C#的?和??

1.&#xff1f;&#xff1f; 為了實現Nullable數據類型轉換成non-Nullable類型數據&#xff0c;才有的一個操作符&#xff1b; 意義&#xff1a;一變量取值&#xff0c;取符號左邊的值&#xff0c;若左邊為null&#xff0c;那么取賦值&#xff1f;&#xff1f;右邊的&#xff1…

odoo 自定義視圖_如何使用Windows的五個模板自定義文件夾視圖

odoo 自定義視圖If you’re particular about how Windows displays the contents of your folders, you can cut your customization time down considerably by taking advantage of File Explorer’s five built-in folder templates. 如果您特別想知道Windows如何顯示文件夾…

C#之ILC和C++的CLR前者更快?

楔子ILC是C#寫的&#xff0c;CLR是C。.Net 7中&#xff0c;為何微軟執意用一個托管的模型去嘗試取代非托管框架呢&#xff1f;至少native code方面它是這么做的這個問題一直縈繞腦海。非托管和托管十年前出版的那本久負盛名的《CLR via C#》至今都是不可或缺的存在&#xff0c;…

歷史

python的歷史 kfsaldkfsdf fdskfdsa fdsjkafsjda fdshkfjsdja View Codefjdskaffdsjkaffdsjakflsad;fjdsklaf 轉載于:https://www.cnblogs.com/jin-xin/articles/10448286.html

typescript+react+antd基礎環境搭建

typescriptreactantd基礎環境搭建&#xff08;包含樣式定制&#xff09; tsconfig.json 配置 // 具體配置可以看上面的鏈接 這里module moduleResolution的配置都會影響到antd的顯示 // allowSyntheticDefaultImports 是antd官網給的配置 必須加上 {"compilerOptions&quo…

最小生成樹Prim算法和Kruskal算法

https://www.cnblogs.com/JoshuaMK/p/prim_kruskal.html 轉載于:https://www.cnblogs.com/DixinFan/p/9225105.html

如何重新打開Windows防火墻提示?

If you are setting up a new program that needs network access, but are not paying close enough attention, you might end up accidentally causing Windows firewall to block the program. How do you fix such a mistake? Today’s SuperUser Q&A post helps a f…

判斷字符串出現次數最多的字符 及 次數

分析 題目的意思大致就是找出每個字符出現的次數&#xff0c;然后比較大小。那么每個字符都應該對應它出現的次數。既然是一一對應的&#xff0c;那我們就想到用對象的key和value來儲存字符和其出現的次數。具體做法 新建一個空對象obj 遍歷給定的字符串接下來就是最重要的 把字…

AI x 量化:華爾街老司機解密智能投資正確姿勢

隨著中國經濟的騰飛&#xff0c;中產階級的崛起&#xff0c;投資管理逐漸步入尋常百姓家。 值得注意的是&#xff0c;在十年前“無財可理”問題解決后&#xff0c;另一個矛盾愈發凸顯——層次不齊的投資素質。據wind數據統計&#xff0c;2004年至2015年12年間&#xff0c;只有3…

如何遠程調試 MAUI blazor / Blazor Hybrid

我們知道瀏覽器模式下 Blazor 可以使用 F12 打開開發工具,調試js查看頁面元素,那當 Maui Blazor 提示煩人的 an unhandled error has occurred 該怎么進行調試呢?1. VS 運行工程于 Debug 模式下,只要 BlazorWebview 控件處于焦點,直接按F12就可以打開開發工具了. 沒有焦點就鼠…

筆記本觸摸鍵盤驅動自動禁用_如何為iPad的藍牙鍵盤禁用自動更正

筆記本觸摸鍵盤驅動自動禁用The take-for-granted features we enjoy when using an on-screen keyboard—like auto-corrections and auto-capitalization–quickly become a hindrance if you’re using a physical keyboard with your iOS device. Let’s look at how to qu…

發票的作用

目錄 發票上的兩個章&#xff1a;稅種&#xff1a;發票的作用&#xff1a;征稅方式&#xff1a;發票限額&#xff1a;參考鏈接發票上的兩個章&#xff1a; 稅務局的發票監制章商家的發票專用章稅種&#xff1a; 增值稅&#xff1a;商家在賣東西時為獲利&#xff0c;而提高價格的…