使用Django Rest Framework将发布请求嵌套在发布请求中

时间:2018-07-12 01:08:43

标签: django django-rest-framework

我是Django Rest和基于JWT令牌的身份验证的新手。

我正在使用名为djangorestframework_simplejwt的软件包

我已经创建了前端UI并成功验证了用户身份。

我遇到一个问题,当我创建一个新用户时,我将用户发送回响应数据中,然后以一个承诺击中身份验证端点以检索我的令牌。

这感觉不对,感觉就像后端可以完全解决。

在前端-

return APIUtil.signup(user).then((user) => {
  return APIUtil.authenticate(user.data)
}).then((user) => dispatch(authenticateUser(user)))

export const authenticate = (user) => {
  return axios({
  method: 'post',
  url: 'http://localhost:8000/api/token/',
    data: {
      username: user.username,
      password: user.password
    }
  });
}

export const signup = (user) => {
  return axios({
    method: 'post',
    url: 'http://localhost:8000/signup/',
      data: {
        username: user.username,
        password: user.password,
        email: user.email
      }
  });
}

在我的后端,我有一个用户视图集和序列化程序,并且使用django rest框架简单的JWT包,我有一个端点api / token /,它接收用户并返回其auth令牌。

我想创建用户,并在创建后在后端点击该端点,但是我不确定这样做的最佳方法。我尝试从用户视图集中的auth视图集继承,但是无法成功向其传递发布请求。

这是我的用户视图集

class UserViewSet(ModelViewSet):
    model = User
    queryset = model.objects.all()
    serializer_class = serializers.UserSerializer
    permission_classes = ([])
    authentication_classes = ([])

    def create(self, request, format=None):
        user = serializers.UserSerializer(data=request.data,context={'request': request})
        if user.is_valid():
            new_user = user.save()
            new_user.password = request.data['password']
            return Response({'username': new_user.username, 'password': new_user.password}, status=status.HTTP_201_CREATED)
        else:
            return Response(user.errors, status=status.HTTP_400_BAD_REQUEST)

在此先感谢您的帮助/指导。

1 个答案:

答案 0 :(得分:0)

首先,请不要在响应中返回密码。

您不需要点击终点。

我猜您想从注册端点返回auth令牌。

只需创建一个单独的代码段,即可在/ api / token中使用该代码来获取令牌。

您可以在注册创建过程中调用该函数以获得相同的令牌,然后在响应中将其返回。