python - 有时 request.session.session_key 是 None

标签 python django session django-sessions

我在从 request.session 获取 session_key 时遇到了问题。

我正在使用 Django1.8 和 Python2.7.10 来设置 RESTful 服务。

这是我的登录 View 的片段:

user = authenticate(username=userName, password=passWord)
if user is not None:
    # the password verified for the user
    if user.is_active:
        # app_logger.debug("User is valid, active and authenticated")
        if hasattr(user, 'parent') :
            login(request, user)
            request.session['ut'] = 4 
            # user type 1 means admin, 2 for teacher, 3 for student, 4 for parents
            request.session['uid'] = user.id
            description = request.POST.get('description','')

            request.session['realname'] = user.parent.realname
            request.session['pid'] = user.parent.id
            devicemanage.update_user_device(devicetoken, user.id, ostype, description) 
            children = parentmanage.get_children_info(user.parent.id)
            session_id = request.session.session_key
            user.parent.login_status = True
            user.parent.save()
            return JsonResponse({'retcode': 0,'notify_setting':{'receive_notify':user.parent.receive_notify,'notify_with_sound':user.parent.notify_with_sound,'notify_sound':user.parent.notify_sound,'notify_shake':user.parent.notify_shake},'pid':user.parent.id,'children':children,'name':user.parent.realname,'sessionid':session_id,'avatar':user.parent.avatar,'coins':user.parent.coins})

现在调用此函数时,我有时会看到响应中的 session_idNone

因此,在调试之后(我在 return JsonResponse(...) 行设置了断点),我看到当我到达断点时 request.session._session_keyNone,但是 request.session.session_keyu'j4lhxe8lvk7j4v5cmkfzytyn5235chf1' 并且 session_id 也是

有谁知道这是怎么发生的?为什么在返回响应之前将其分配给 session_id 时未设置 session_key 的值?

最佳答案

根据约翰的建议。

我通过这个片段解决了这个问题:

if not request.session.session_key:
    request.session.save()
session_id = request.session.session_key

关于python - 有时 request.session.session_key 是 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39181655/

相关文章:

python - Django Haystack 内存错误

python - 来自 HTML 表单的 Flask 请求返回 None 值,我该怎么办?

django - 在 django rest framework 3.0+ 中,如何检查更新时的对象差异?

PHP 无法从 NFS 共享中读取 session

session - DocumentDB - 较新的 session token 是否保证读回较旧的写入?

python - Sentry - 清理局部变量敏感数据

python - 比较两个 Python 3 日期时间对象返回 "can' t 比较原始偏移和偏移感知日期时间 : TypeError"

python - “PlayerStatsForm”对象没有属性 'username'

django - 强制 Django 使用 INNER JOIN 而不是 LEFT OUTER JOIN

java - 简单http服务器中的 session 处理