当前位置:  开发笔记 > 后端 > 正文

在Django中,我如何找到request.session sessionid并将其用作变量?

如何解决《在Django中,我如何找到request.sessionsessionid并将其用作变量?》经验,为你挑选了5个好方法。

我知道你可以使用会话变量request.session['variable_name'],但似乎没有办法以类似的方式将sessionid作为变量获取.这记录在哪里?我找不到它.谢谢你的帮助!



1> dalore..:

更简单:

request.session.session_key

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


``request.session.session_key``在Django 1.7中也能正常工作.
@VebjornLjosa是什么?
@aehike:@ request.session._session_key`根据@Vinicius的回答
`request.session.session_key`在Django 1.6中运行正常.
request.session.session_key在Django 1.8中也能正常工作.
我更喜欢使用`request.session._get_or_create_session_key()`因为,可能会发生没有ID的问题.
这是否有效完全取决于会话是否已创建。看我的答案

2> che..:

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

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



3> Vinicius..:

在Django> = 1.4使用:

request.session._session_key


嗯,私有变量的主要意图(以下划线开头)是你不应该**使用它们.

4> vijay shanke..:

这将为您提供会话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()



5> Greg..:

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

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

    print(request.session.session_key)

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有