Я знаю, что вы можете использовать переменные сеанса request.session['variable_name']
, но, похоже, нет способа получить идентификатор сеанса в качестве переменной аналогичным образом. Это где-нибудь задокументировано? Я не могу его найти. Спасибо за вашу помощь!
88
request.session._session_key
согласно ответу @Viniciusrequest.session.session_key
отлично работает в Django 1.6.request.session.session_key
также отлично работает в Django 1.7.request.session._get_or_create_session_key()
потому что может случиться так, что еще нет идентификатора.Сессии Django сохраняют свой ключ в куки. По крайней мере, его промежуточное ПО извлекает это так:
from django.conf import settings session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
источник
в Django> = 1.4 используйте:
request.session._session_key
источник
Это либо даст вам идентификатор сеанса, либо создаст его для вас. Если вы это сделаете
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']
источник
Чтобы надежно получить ключ сеанса, вам необходимо сначала убедиться, что сеанс был создан. В документации упоминается
.create()
метод сеанса, который можно использовать для проверки наличия сеансового ключа:def my_view(request): if not request.session.session_key: request.session.create() print(request.session.session_key)
источник
В Django 1.8:
а также
Оба работают правильно.
источник
Вы также можете проверить свои сеансы :
If "var" in request.session: Var = request.session['var'] Return httpResponse("set") Else: Return httpResponse("there isn't")
источник