我對Django和REST來說很新,我希望能夠指定一個值並讓REST api只返回符合該值的行。有點像在sql select * from exampleTBL where id = 1
中,然後返回第一行。但是,如果通過URL來完成:www.website/api/tmpHost/?id=1
和T母雞第一行是通過REST API將過濾器添加到Django REST API
我的觀點看起來像返回:
class tmp_HostList(APIView):
def get (self, request, format=None):
tmp_hosts = tmp_Host.objects.all()
serializer = tmp_HostSerializer(tmp_hosts, many=True, context={'request': request})
return Response(serializer.data)
def post(self, request, format=None):
serializer = tmp_HostSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我的網址是這樣的:
url(r'^api/tmpHost/$', views.tmp_HostList.as_view()),
我的串行的樣子:
class tmp_HostSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
class Meta:
model = tmp_Host
fields = '__all__'
我怎麼會去這樣做呢?我在這裏看到了解決方案,但它們似乎不適合我。在那裏,我使用APIView和我的串行線路的區別是:serializer = tmp_HostSerializer(tmp_hosts, many=True, context={'request': request})
而他們的將是簡單的像:serializer = tmp_HostSerializer
你從哪裏得到的變量「Q」或者是應該由一個過濾器更換? –
@JustinBraham應該是'param'。我犯了一個錯誤 –