Django-无法访问会话

时间:2019-04-05 14:33:25

标签: django django-rest-framework django-sessions

在开发中使用Django REST框架,我有以下(以前工作的)代码示例,其中一个视图中设置会话数据,而另一个视图中使用该数据。

就像我说的那样,这段代码曾经可以工作,但是现在由于某种原因,无法再访问存储的会话数据。

用于设置会话数据的视图

@api_view(["POST"])
@permission_classes((AllowAny, ))
def set_session_data(request):
    session_data_dict = loads(request.body.decode('utf-8'))
    if not isinstance(session_data_dict, dict):
        return Response({"message": "Expected a JSON object with key-val pairs to be sent. Key-val pairs to be set to session. Received something else.", status: status.HTTP_400_BAD_REQUEST})
    try:
        for key, value in session_data_dict.items():
            request.session[key] = value
        response_data = {"status": rest_status.HTTP_200_OK}
    except:
        response_data = {"status": rest_status.HTTP_500_INTERNAL_SERVER_ERROR}
    return Response(response_data)

用于访问存储的会话数据的视图:

@api_view(["GET"])
@permission_classes((AllowAny, ))
def check_user_logged_in(request):
    try:
        data = {"login_token": request.session["login_token"]}
    except KeyError:
        data = {"login_token": ""}
    return Response(data, status=rest_status.HTTP_200_OK)

我已经进行了一些测试,添加完之后,我可以在set_session_data视图中访问会话中的数据,如下所示:

request.session['login_token']

但是当我在check_user_logged_in视图中尝试相同操作时,我得到了KeyError

因此,我尝试通过检查每个视图中的request.COOKIES[settings.SESSION_COOKIE_NAME]的值来检查两个视图的会话是否是同一会话。但是在两种视图中都会导致以下错误:

KeyError: 'sessionid'

现在,我还没有触摸会话设置,因此它们是django-admin startproject中的默认设置。 ('django.contrib.sessions'中的INSTALLED_APPS'django.contrib.sessions.middleware.SessionMiddleware'中的MIDDLEWARE,并且未添加任何内容。)

谁能解释为什么会这样?

0 个答案:

没有答案