Джанго - не может получить доступ к сеансу - PullRequest
0 голосов
/ 05 апреля 2019

Используя Django REST Framework в разработке, у меня есть следующий (ранее работающий) пример кода, где в одном представлении я устанавливаю данные сеанса, а в другом - эти данные.

И, как я уже сказал,этот код работал, но теперь по какой-то причине к сохраненным данным сеанса больше нельзя получить доступ.

Просмотр для установки данных сеанса

@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 и ничего не добавлено.)

Кто-нибудь может объяснить, почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...