How can I find out the request.session sessionid and use it as a variable?

DjangoSessionSessionid

Django Problem Overview


I'm aware that you can get session variables using request.session['variable_name'], but there doesn't seem to be a way to grab the session id as a variable in a similar way. Is this documented anywhere? I can't find it.

Django Solutions


Solution 1 - Django

request.session.session_key

Note the key will only exist if there is a session, no key, no session. You can use this to test if a session exists. If you want to create a session, call create.

Solution 2 - Django

Django sessions save their key in a cookie. At least its middleware extracts it like this:

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

Solution 3 - Django

in Django >= 1.4 use:

request.session._session_key

Solution 4 - Django

This will either get you a session ID or create one for you. If you do dir(request.session), you will get many useful methods.

['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()

Solution 5 - Django

To reliably get the session key, you need to make sure the session has been created first. The documentation mentions a .create() session method, which can be used to make sure there's a session key:

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

    print(request.session.session_key)
    

Solution 6 - Django

Use:

request.COOKIES['sessionid']

Solution 7 - Django

In Django 1.8: >request.session.session_key

and
>request.session._session_key

Both work correctly.

Solution 8 - Django

You can check in your sessions too:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionrmhView Question on Stackoverflow
Solution 1 - DjangodaloreView Answer on Stackoverflow
Solution 2 - DjangocheView Answer on Stackoverflow
Solution 3 - DjangoViniciusView Answer on Stackoverflow
Solution 4 - Djangovijay shankerView Answer on Stackoverflow
Solution 5 - DjangoGregView Answer on Stackoverflow
Solution 6 - DjangoHaroldView Answer on Stackoverflow
Solution 7 - DjangoSarthak AgrawalView Answer on Stackoverflow
Solution 8 - DjangoOmid RezaView Answer on Stackoverflow