在Django中,如何findrequest.session sessionid并将其用作variables?

我知道你可以使用request.session['variable_name']获得会话variables,但似乎没有办法以类似的方式获取sessionid作为variables。 这是logging在任何地方? 我找不到 谢谢你的帮助!

更简单:

 request.session.session_key 

注意,只有存在会话时,密钥才会存在,没有密钥,没有会话。 你可以用它来testing一个会话是否存在。 如果你想创build一个会话,请调用create。

Django会话将其密钥保存在cookie中。 至less它的中间件像这样提取它:

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

在Django> = 1.4使用:

 request.session._session_key 

这可以让你得到一个会话ID或为你创build一个。 如果你做了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() 

使用:

 request.COOKIES['sessionid'] 

要可靠地获取会话密钥,您需要确保会话已经被创build。 文档中提到了一个.create()会话方法,它可以用来确保有一个会话密钥:

 def my_view(request): if not request.session.session_key: request.session.create() print(request.session.session_key) 

在Django 1.8中:

request.session.session_key

request.session._session_key

两者都正常工作。

您也可以检查您的会话

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