【问题标题】:Query json http response from browser从浏览器查询 json http 响应
【发布时间】:2013-10-25 03:46:49
【问题描述】:

我有一个用 Django 编写的视图,它返回 JSON 响应,例如:

[{"pk": 3222, "model": "test.test", "fields": {"f1:f1, f3:f2"}}......etc]    

返回此视图的 URL 是:127.0.0.1:8000/someview/modelname/all

但是当我在浏览器上点击这个时127.0.0.1:8000/someview/modelname/all?pk=3222

我没有得到过滤结果。我如何实现这一目标?还是我对 URL 中查询的理解有误。

更新:

在我看来:

obj = SomeModel.objects.all()
return HttpResponse(serializers.serialize('json', [obj,]))

【问题讨论】:

  • 如果你不提供底层代码我们怎么知道发生了什么?
  • 能否提供代码供我们查看?

标签: python django json query-string


【解决方案1】:

您只需要GET pk 参数和pk 您可以GET 记录:

if request.GET['pk']:
   p_k = int(request.GET['pk'])
   obj = Somemodel.objects.get(pk=p_k)
else:
   obj = SomeModel.objects.all()

【讨论】:

    【解决方案2】:

    这是因为您根本没有在代码中进行任何过滤。您的第一行说“给我所有 SomeModel 对象”,第二行说“这是所有 SomeModel 对象作为 JSON 的 HTTP 响应。”

    假设您不使用基于类的视图,您可以执行以下操作:

    from django.shortcuts import get_object_or_404
    
    def SomeView(request):
        obj = SomeModel.objects.all()
        if request.GET.get('pk') is not None:
            obj = get_object_or_404(SomeModel, pk=request.GET.get('pk'))
        return HttpResponse(serializers.serialize('json', obj), content_type="application/json")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多