Soy consciente de que puede obtener variables de sesión usando request.session['variable_name']
, pero no parece haber una forma de tomar el id de sesión como variable de una manera similar. ¿Está esto documentado en alguna parte? No lo encuentro. ¡Gracias por tu ayuda!
88
request.session._session_key
según la respuesta de @Viniciusrequest.session.session_key
funciona bien en Django 1.6.request.session.session_key
también funciona bien en Django 1.7.request.session._get_or_create_session_key()
porque puede suceder que todavía no haya una identificación.Las sesiones de Django guardan su clave en una cookie. Al menos su middleware lo extrae así:
from django.conf import settings session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
fuente
en Django> = 1.4 use:
request.session._session_key
fuente
Esto le dará un ID de sesión o creará uno para usted. Si lo hace
dir(request.session)
, obtendrá muchos métodos útiles.['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()
fuente
Utilizar:
request.COOKIES['sessionid']
fuente
Para obtener la clave de sesión de manera confiable, primero debe asegurarse de que la sesión se haya creado. La documentación menciona un
.create()
método de sesión, que puede usarse para asegurarse de que haya una clave de sesión:def my_view(request): if not request.session.session_key: request.session.create() print(request.session.session_key)
fuente
En Django 1.8:
y
Ambos funcionan correctamente.
fuente
También puedes consultar tus sesiones :
If "var" in request.session: Var = request.session['var'] Return httpResponse("set") Else: Return httpResponse("there isn't")
fuente