首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django rest框架,如何作为post请求重定向到其他视图集

Django rest框架,如何作为post请求重定向到其他视图集
EN

Stack Overflow用户
提问于 2021-09-16 08:55:19
回答 1查看 109关注 0票数 0

我有两个视图集: UserViewSet和GoogleViewSet。

在GoogleViewSet中,我想验证令牌,然后重定向到UserViewSet。

代码语言:javascript
运行
复制
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错误

代码语言:javascript
运行
复制
{
    "detail": "Method \"GET\" not allowed."
}

如何重定向为post请求?

我已经尝试过了,但得到的request.data为空

代码语言:javascript
运行
复制
class UserViewSet(ViewSet):

    def create(self, request, *args, **kwargs):
        data = request.data
        return Response()


class GoogleViewSet(APIView):
    permission_classes = (permissions.AllowAny,)

    def post(self, request):
        password = User.objects.make_random_password()
        return HttpResponseTemporaryRedirect(
            '/v1/users/',
            content=json.dumps({'email': 'test@test.com', 'username': 'test', 'password': password})
        )
EN

回答 1

Stack Overflow用户

发布于 2021-09-16 09:10:45

为此,您需要状态代码307。通常重定向会给你302,除非它是永久重定向,在这种情况下是301。两者都将请求转换为GET。

307类似于302,但保留了请求方法和主体。

你可以像这样继承HttpResponseRedirectBase的子类:

代码语言:javascript
运行
复制
class HttpResponseTemporaryRedirect(HttpResponseRedirectBase):
    status_code = 307

并在视图中使用此响应类

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69205313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档