2011-02-25 54 views

回答

18

Cookie是客戶端瀏覽器上的一個東西,僅僅是對Session的引用,默認情況下它會存儲在數據庫中。

該cookie存儲一個隨機ID並且不存儲任何數據本身。會話使用cookie中的值來確定數據庫中哪些Session屬於當前瀏覽器。

這與直接在cookie上寫入信息非常不同。

實施例:

httpresponse.set_cookie('logged_in_status', 'True') 
# terrible idea: this cookie data is editable and lives on your client's computer 


request.session['logged_in_status'] = True 
# good idea: this data is not accessible from outside. It's in your database. 
+0

檢查[this](http://stackoverflow.com/questions/6353703/session-cookie-some-misunderstandings) – Jibin 2011-06-21 05:29:09

+0

'SessionStorage'和'CookieStorage'在這裏有什麼區別:https://docs.djangoproject。 com/en/dev/ref/contrib/messages/#configure-the-message-engine - 他們不是替代方式來保存數據。但是你說cookie不會自己存儲數據。 – Medorator 2014-06-13 17:13:24

+0

@buffer,默認情況下,SessionStorage中的cookie包含數據庫中數據存儲的ID。 – 2014-06-13 18:05:03

6

Cookie是不一個Django或Python特定的技術。 Cookie是在客戶瀏覽器中存儲少量狀態的一種方式。它被用來補充(或根據你的觀點進行破解)HTTP,這是一種無狀態協議。這裏有各種各樣的限制,其他域不能讀取你的cookies,你只能存儲幾k個數據(只取決於瀏覽器!)等等等等。

一個cookie可以用來存儲會話密鑰。會話是存儲在服務器端的用戶狀態的集合。會話密鑰被傳回到服務器,這使您可以查找該會話的狀態。大多數Web框架(不僅僅是Django)都會內置某種會話概念。這使您可以將服務器端狀態添加到HTTP對話中。