Django rest framework, как перенаправить на другой набор представлений как пост запрос
У меня есть два набора представлений: UserViewSet и GoogleViewSet.
В GoogleViewSet я хочу проверить токен и затем перенаправить в UserViewSet.
class GoogleViewSet(APIView):
def post(self, request):
# some logic
password = User.objects.make_random_password()
return redirect(reverse('v1_users:user_create'),
kwargs={'email': 'test@test.com', 'username': 'test', 'password': password})
Но при перенаправлении я получил 405 ошибку
{
"detail": "Method \"GET\" not allowed."
}
Как перенаправить пост-запрос?
Для этого вам нужен код состояния 307. Обычный редирект даст вам 302, если только это не постоянный редирект, в этом случае это 301. Оба преобразуют запрос в GET.
307 похож на 302, но сохраняет метод и тело запроса.
Вы можете подклассифицировать HttpResponseRedirectBase
следующим образом:
class HttpResponseTemporaryRedirect(HttpResponseRedirectBase):
status_code = 307
и использовать этот класс ответа в представлении