对 http://www.django-rest-framework.org/tutorial/2-requests-and-responses/ 做补充
-
@api_view(['GET', 'PATCH', 'DELETE'])
-
def snippet_detail(request, pk):
-
"""
-
Retrieve, update or delete a snippet instance.
-
"""
-
try:
-
snippet = Snippet.objects.get(pk=pk)
-
except Snippet.DoesNotExist:
-
return Response(status=status.HTTP_404_NOT_FOUND)
-
-
elif request.method == 'PATCH':
-
newData = transferPatchData(snippet, request.data)
-
serializer = SnippetSerializer(snippet, data=newData)
-
if serializer.is_valid():
-
serializer.save()
-
return Response(serializer.data)
-
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
-
-
def transferPatchData(obj, reqtData):
-
newData = {}
-
for attrName in obj.__dict__.keys():
-
if re.search(r"^_", attrName):
-
continue
-
if reqtData.has_key(attrName):
-
newData[attrName] = reqtData.get(attrName)
-
else:
-
newData[attrName] = getattr(obj, attrName)
-
return newData
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26250550/viewspace-2120779/
,如需转载,请注明出处,否则将追究法律责任。