DRF - Как перенаправить пользователя после того, как он уже отправил ответ

Я столкнулся со следующей проблемой: я создаю интеграцию стороннего приложения в мое приложение Django. Пользователи, которые уже пользуются сторонним приложением, должны иметь возможность нажать на кнопку и быть перенаправленными в мое приложение. При перенаправлении сторонняя компания отправляет POST-запрос с JSON, который содержит некоторую информацию (email, некоторые ID и т.д.).

Я использую эту информацию, чтобы узнать, есть ли пользователь в моей БД.

Если да, то я хочу:

  • возвращает ответ с идентификатором пользователя и API-ключом для хранения третьей стороной
  • затем перенаправить пользователя на экран входа

Если нет, то я хочу:

  • создать пользователя и вернуть ответ с идентификатором пользователя и API-ключом для хранения третьей стороной
  • .
  • затем перенаправить пользователя на экран подтверждения.

Вопрос, который у меня есть: Как я могу перенаправить пользователя ПОСЛЕ возврата идентификатора пользователя & API ключа?

Моя текущая логика такова:

class UserList(APIView):
    ....

    def post(self, request):
        if account_exists:
            return Response(account_data)
            # NOW I WANT TO REDIRECT
        else:
            create_account()
            return Response(account_data)
            # NOW I WANT TO REDIRECT

В настоящее время я использую DRF для обработки POST-запросов, но не уверен, что это лучший способ сделать это?

YOu are Using DRF, I guess you build backend APIs' here and you may be using a frontend client.

Вам не нужно перенаправлять пользователей в вашем backend api, вы должны сделать это во frontend приложении.

Мое первое решение - я включу третьи данные вместе с ID пользователя и API ключом для отправки обратно пользователю, назовем их xyz. Теперь, если account_exists равен true, отправьте ответ TRUE как значение xyz, иначе отправьте false как значение xyz.

Теперь на фронтенде прочитайте значение xyz и используйте javascript для перенаправления пользователей.

** This is just an example you can apply relevant logic by yourself.

Часть 1 в случае истинного оператора if: использовать HTTPResponseRedirect from django.http import HttpResponseRedirect

После передачи ваших данных третьей стороне, return HTTPResponseRedirect(yourdesiredurl)

Часть 2 для оператора false if или else:

Для перенаправления пользователя на экран подтверждения попробуйте JsonResponse

from django.http import JsonResponse

в конце вашей функции вы используете ее с оператором return следующим образом:

return JsonResponse("Confirmation of XXXX", safe = False)

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

Вернуться на верх