-2

我有一个用 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,]))
4

2 回答 2

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")
于 2013-10-16T21:16:04.187 回答
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()
于 2013-10-16T21:13:13.223 回答