代码之家  ›  专栏  ›  技术社区  ›  hancho

使用Django Rest框架在post请求中嵌套post请求

  •  0
  • hancho  · 技术社区  · 8 年前

    djangorestframework_simplejwt

    我已经创建了我的前端用户界面并成功地验证了用户。

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

    这感觉不对劲,感觉像是后端可以完全处理的事情。

    在前端-

    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
          }
      });
    }
    

    我想创建一个用户,在创建之后,在后端点击该端点,但我不完全确定这样做的最佳方式。我尝试从用户viewset中的auth viewset继承,但未能成功地向其传递post请求。

    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 回复  |  直到 8 年前
        1
  •  0
  •   Enthusiast Martin    8 年前

    你不需要到达终点。

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

    您可以在signup create中调用该函数来获取相同的令牌,然后在响应中返回它。

    推荐文章