【问题标题】:How to display the result in Django API如何在 Django API 中显示结果
【发布时间】:2019-10-22 09:06:19
【问题描述】:

我刚开始研究基于 python 的 Django。我正在按照这个示例创建一个 API。

https://dzone.com/articles/create-a-simple-api-using-django-rest-framework-in

我没有使用 POSTMAN,而是使用我的网络浏览器来显示结果,但我遇到了错误。不允许使用方法“GET”。 我查看了不同的答案并得出结论,我需要添加一个“GET”方法 我尝试改变

@api_view(["POST"]) 从 'POST' 到 'GET'

但随后它会引发错误“预期值:第 1 行第 1 列(字符 0)”。

如何在此视图中添加 GET。

@api_view(["POST"])
def IdealWeight(heightdata):
   try:
      height=json.loads(heightdata.body)
      weight=str(height*10)
      return JsonResponse("Ideal weight should be:"+weight+" kg",safe=False)
   except ValueError as e:
      return Response(e.args[0],status.HTTP_400_BAD_REQUEST)

我需要 POSTMAN 来查看输出吗? 谢谢

【问题讨论】:

    标签: python django python-3.x api


    【解决方案1】:

    您的代码缩进错误。再次查看博客
    您的函数 IdealWeight 期望它尝试从您的 GET 请求正文中获取(使用json.loads(heightdata.body))的值。当您使用浏览器执行 GET 请求时,正文为空。这可能会导致错误,否则您的 height 将为空。

    如果您只想像这样测试 GET 更改的端点。

    @api_view(["GET"])
    def IdealWeight(request):
      if request.method == 'GET':
        return Response({"Print": "GET request from browser works"}, status=status. HTTP_200_OK)
    

    您应该使用 postman 来测试 POST 请求,因为它很容易

    【讨论】:

    • 非常感谢。我修复了缩进..您建议它正在工作,但是我如何从 url 获取 heightdata 并处理它以返回输出?有没有办法从浏览器测试它?如果给 127.0.0.1:8000/idealweight/2.3 可以显示 23 吗?我试过在烧瓶中做,我可以在浏览器上看到它。
    • 当你去127.0.0.1:8000/idealweight时你的api可以浏览吗?如果,那么您可以继续使用 POST 请求功能并使用 Web UI 表单输入数据。如果 no 则您可以使用查询参数 height = int(request.query_params["height"])(而不是 height=json.loads(heightdata.body))和像 127.0.0.1:8000/idealweight/?height=23 这样的 url 获取高度值 23
    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多