In Django, how can I find out the request.session sessionid and use it as a variable?

前端 未结 8 837
借酒劲吻你
借酒劲吻你 2020-12-13 03:08

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 sessionid as a variable

相关标签:
8条回答
  • 2020-12-13 03:40

    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")
    
    0 讨论(0)
  • 2020-12-13 03:42

    Use:

    request.COOKIES['sessionid']
    
    0 讨论(0)
  • 2020-12-13 03:46

    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]
    
    0 讨论(0)
  • 2020-12-13 03:47

    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()
    
    0 讨论(0)
  • 2020-12-13 03:54

    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)
    
    0 讨论(0)
  • 2020-12-13 03:55

    Much simpler:

    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.

    0 讨论(0)
提交回复
热议问题