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)
все, что вы напишете в запятых, будет отображено в новом шаблоне для пользователя.