我有一个用Django编写的视图,它返回JSON响应,如:
[{"pk": 3222, "model": "test.test", "fields": {"f1:f1, f3:f2"}}......etc]
返回此视图的网址为: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,]))
答案 0 :(得分:2)
这是因为您根本没有在代码中进行任何过滤。你的第一行说“给我所有的SomeModel对象”,你的第二行说“这里是所有SomeModel对象的HTTP响应为JSON。”
假设您没有使用基于类的视图,您可以执行以下操作:
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")
答案 1 :(得分: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()