2009-02-08 25 views

回答

115

簡單多了:

request.session.session_key 

注意,如果有一個會話密鑰才存在,沒有鑰匙,沒有會話。您可以使用它來測試會話是否存在。如果你想創建一個會話,請調用create。

+3

從Django 1.4開始,這不再有效。 – 2012-09-11 10:50:39

+3

@VebjornLjosa什麼? – aehlke 2012-09-20 21:42:56

23

Django會話將其密鑰保存在cookie中。至少其中間件中分離出來是這樣的:

from django.conf import settings 
session_key = request.COOKIES[settings.SESSION_COOKIE_NAME] 
+1

這不,如果會話幫助鍵雖然不存在。 – Greg 2016-09-25 22:43:48

4

用途:

request.COOKIES['sessionid'] 
9

這將爲您提供會話ID或爲您創建一個會話ID。如果你做dir(request.session),你會得到很多有用的方法。

['TEST_COOKIE_NAME', 'TEST_COOKIE_VALUE', '__class__', '__contains__', 
'__delattr__', '__delitem__', '__dict__', '__doc__', '__format__', 
'__getattribute__', '__getitem__', '__hash__', '__init__', '__module__', 
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', 
'__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 
'_get_new_session_key', '_get_or_create_session_key', '_get_session', 
'_get_session_key', '_hash', '_session', '_session_key', 'accessed', 
'clear', 'create', 'cycle_key', 'decode', 'delete', 'delete_test_cookie', 
'encode', 'exists', 'flush', 'get', 'get_expire_at_browser_close', 
'get_expiry_age', 'get_expiry_date', 'has_key', 'items', 'iteritems', 
'iterkeys', 'itervalues', 'keys', 'load', 'modified', 'pop', 'save', 
'session_key', 'set_expiry', 'set_test_cookie', 'setdefault', 
'test_cookie_worked', 'update', 'values'] 


session_id = request.session._get_or_create_session_key() 
18
在Django> = 1.4使用

request.session._session_key 
1

在Django中1.8:

request.session.session_key


request.session._session_key

兩者都正常工作。

4

要可靠地獲取會話密鑰,您需要確保首先創建會話。 The documentation提到了.create()會話方法,它可以用來確保有一個會話密鑰:

​​
0

可以檢查您的會話太:

If "var" in request.session: 
     Var = request.session['var'] 
     Return httpResponse("set") 
Else: 
     Return httpResponse("there isn't") 
相關問題