Ich bin ziemlich neu in Django und REST und ich möchte in der Lage sein, einen Wert anzugeben und die REST API geben nur eine Zeile zurück, wo dieser Wert erfüllt ist. Ein bisschen wie in Sql select * from exampleTBL where id = 1
und dann wird die erste Zeile zurückgegeben. Aber es würde durch die URL erfolgen: www.website/api/tmpHost/?id=1
und t Henne die erste Zeile durch das REST-API zurückgegeben wirdHinzufügen von Filtern zu Django REST API
Meine Ansicht wie folgt aussieht:
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)
meine url wie folgt aussehen:
url(r'^api/tmpHost/$', views.tmp_HostList.as_view()),
Mein Serializer sieht so aus:
class tmp_HostSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
class Meta:
model = tmp_Host
fields = '__all__'
Wie würde ich das machen? Ich habe hier Lösungen gesehen, aber sie scheinen nicht für mich zu funktionieren. Die Unterschiede in dem, dass ich APIView und meine Serializer Linie verwenden wäre: serializer = tmp_HostSerializer(tmp_hosts, many=True, context={'request': request})
während ihre wie einfach wäre: serializer = tmp_HostSerializer
Wo haben Sie die Variable 'q' erhalten oder ist das durch einen Filter ersetzt werden soll? –
@JustinBraham sollte es "param" sein. Ich habe einen Fehler gemacht –