【问题标题】:Nesting a post request inside a post request with Django Rest Framework使用 Django Rest 框架在 post 请求中嵌套 post 请求
【发布时间】:2018-12-20 02:50:22
【问题描述】:

我是 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/ ,它接收用户并返回他们的身份验证令牌。

我想创建用户并在创建后点击后端的端点,但我不完全确定这样做的最佳方式。我尝试从我的用户视图集中的身份验证视图集继承,但未能成功地将发布请求传递给它。

这是我的用户视图集

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)

在此先感谢您提供任何帮助/指导。

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

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

    你不需要到达终点。

    我猜你想从注册端点返回身份验证令牌。

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

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

    【讨论】:

      猜你喜欢
      • 2023-01-08
      • 2016-05-31
      • 2016-04-07
      • 1970-01-01
      • 2023-03-16
      • 2021-05-06
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多