Подтвердить что ты не робот

В Django, как я могу узнать request.session sessionid и использовать его как переменную?

Я знаю, что вы можете получить переменные сеанса с помощью request.session['variable_name'], но, похоже, нет способа захватить sessionid как переменную аналогичным образом. Является ли это документированным где угодно? Я не могу найти его. Спасибо за вашу помощь!

4b9b3361

Ответ 1

Гораздо проще:

request.session.session_key

Обратите внимание, что ключ будет существовать только в том случае, если есть сеанс, нет ключа и сеанса. Вы можете использовать это, чтобы проверить, существует ли сеанс. Если вы хотите создать сеанс, вызовите create.

Ответ 2

Занятия Django сохраняют свой ключ в файле cookie. По крайней мере, его промежуточное ПО извлекает его так:

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

Ответ 3

в Django >= 1.4 use:

request.session._session_key

Ответ 4

Это либо даст вам идентификатор сеанса, либо создаст его для вас. Если вы выполните 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()

Ответ 5

Чтобы надежно получить ключ сеанса, вы должны убедиться, что сеанс был создан первым. В документации упоминается метод сеанса .create(), который можно использовать для проверки наличия ключа сеанса:

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

    print(request.session.session_key)

Ответ 6

Использование:

request.COOKIES['sessionid']

Ответ 7

В Django 1.8:

request.session.session_key

и

request.session._session_key

Оба работают правильно.

Ответ 8

Вы можете проверить свои сессии:

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