如何找出 request.session sessionid 并将其用作 Django 中的变量?

发布于 2024-07-12 22:41:27 字数 109 浏览 12 评论 0原文

我知道您可以使用 request.session['variable_name'] 获取会话变量,但似乎没有办法将会话 id(key) 作为变量来获取类似的方式。 这有记录在任何地方吗? 我找不到它。

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(key) as a variable in a similar way. Is this documented anywhere? I can't find it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

×纯※雪 2024-07-19 22:41:28

为了可靠地获取会话密钥,您需要首先确保会话已创建。 文档提到了.create() 会话方法,可用于确保存在会话密钥:

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

    print(request.session.session_key)

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)
厌味 2024-07-19 22:41:28

使用:

request.COOKIES['sessionid']

Use:

request.COOKIES['sessionid']
长安忆 2024-07-19 22:41:28

在 Django 1.8 中:

请求.session.session_key

请求.session._session_key

两者都正常工作。

In Django 1.8:

request.session.session_key

and

request.session._session_key

Both work correctly.

假面具 2024-07-19 22:41:28

您可以使用 session_key_session_key_get_session_key() 如下所示。 *我使用Django 4.2.1

# "views.py"

from django.http import HttpResponse

def my_view(request):
    print(request.session.session_key) # w85oia6b5yqj5n2t6n7lpwuhw7lt7ti2
    print(request.session._session_key) # w85oia6b5yqj5n2t6n7lpwuhw7lt7ti2
    print(request.session._get_session_key()) # w85oia6b5yqj5n2t6n7lpwuhw7lt7ti2
    return HttpResponse("Test")

并且,您可以在Django模板中使用request.session.session_key获取会话密钥,如下所示:

{# "templates/index.html #}

{{ request.session.session_key }} {# w85oia6b5yqj5n2t6n7lpwuhw7lt7ti2 #}

You can get the session key with session_key, _session_key and _get_session_key() in Django Views as shown below. *I use Django 4.2.1:

# "views.py"

from django.http import HttpResponse

def my_view(request):
    print(request.session.session_key) # w85oia6b5yqj5n2t6n7lpwuhw7lt7ti2
    print(request.session._session_key) # w85oia6b5yqj5n2t6n7lpwuhw7lt7ti2
    print(request.session._get_session_key()) # w85oia6b5yqj5n2t6n7lpwuhw7lt7ti2
    return HttpResponse("Test")

And, you can get the session key with request.session.session_keyin Django Templates as shown below:

{# "templates/index.html #}

{{ request.session.session_key }} {# w85oia6b5yqj5n2t6n7lpwuhw7lt7ti2 #}
べ映画 2024-07-19 22:41:28

您也可以查看您的会话

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

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")
木格 2024-07-19 22:41:27
request.session.session_key

请注意,只有存在会话时密钥才会存在,没有密钥则不存在会话。 您可以使用它来测试会话是否存在。 如果要创建会话,请调用create。

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.

简美 2024-07-19 22:41:27

Django 会话将其密钥保存在 cookie 中。 至少它的中间件是这样提取的:

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

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]
醉殇 2024-07-19 22:41:27

在 Django >= 1.4 中使用:

request.session._session_key

in Django >= 1.4 use:

request.session._session_key
变身佩奇 2024-07-19 22:41:27

这将为您提供一个会话 ID 或为您创建一个。 如果您执行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()

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()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文