Я столкнулся с проблемой, когда получил session_key от request.session
.
Я использую Django1.8 и Python2.7.10 для настройки службы RESTful.
Вот фрагмент моего входа в систему:
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_id
в ответе None
.
Итак, после отладки (я установил точку останова на строке return JsonResponse(...)
) я вижу, что когда я нажимаю точку останова, request.session._session_key
равно None
, но request.session.session_key
равно u'j4lhxe8lvk7j4v5cmkfzytyn5235chf1'
, а session_id
также равно None
.
Кто-нибудь знает, как это может произойти? Почему значение session_key
не устанавливается при назначении его session_id
перед возвратом ответа?
request.session.session_key
равно None, это означает, что объект сеанса является совершенно новым и еще не был сохранен в базе данных. Вызовrequest.session.save()
должен заполнить этот атрибут. - person John Gordon   schedule 27.08.2016