【问题标题】:Can't send GET request to Django via Postman无法通过 Postman 向 Django 发送 GET 请求
【发布时间】:2021-06-24 09:47:24
【问题描述】:

我执行请求http://167.71.57.114/api/users/list-exercises 并收到错误

用户匹配查询不存在。

我该如何解决这个错误?

发现错误原因是请求没有任何数据

但是你可以看到我发送的是“user_id”

我的代码

class WorkoutUserProgramListViewAPI(GenericAPIView):
    permission_classes = (IsAuthenticated,)
    serializer_class = WorkoutUserProgramListSerializer

    def get(self, request):
        response = {}
        user = request.data.get("user_id") # user is None
        user = User.objects.get(pk=user) # Error User matching query does not exist.

【问题讨论】:

  • GET 请求没有正文,请使用 Params!
  • 对@KlausD. 的评论的补充:您可以使用请求参数或提供 user_id 作为 API 端点的一部分。考虑到 URL,使用参数看起来像 api/users/list-exercises?user_id=<user_id>。如果您将 user_id 作为 API 端点的一部分,它看起来像 api/users/list-exercises/<user_id>

标签: python django postman


【解决方案1】:

就像@Klaus D 在 cmets 中所说,您宁愿将用户 ID 作为参数。如果您发送 user_id=29,我会将其添加为参数,这应该将 URL 更改为类似

http://167.71.57.114/api/users/list-exercises?user_id=29

【讨论】:

    【解决方案2】:

    objects.get 方法没有找到任何结果时会发生该错误。 如果您使用过滤器并验证结果不是 None ,则在参数传递的 id 不属于任何用户的情况下避免该错误。

    class WorkoutUserProgramListViewAPI(GenericAPIView):
        permission_classes = (IsAuthenticated,)
        serializer_class = WorkoutUserProgramListSerializer
    
        def get(self, request):
            response = {}
            user_id = request.data.get("user_id")
            user = User.objects.filter(pk=user_id).first()
            if user is not None:
                # code
            else:
                # code
    

    也听听Klaus D. 告诉你的内容。

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 2020-09-15
      • 2017-10-26
      • 1970-01-01
      相关资源
      最近更新 更多