我在客户端保存临时数据,并获得客户端ID。 (App存储用户在客户端发布数据,直到提交完成)
我想在创建/更新时将此客户端ID与其他数据一起发送到服务器。
如果服务器在使用serializer.data响应时可以附加此客户端ID,则客户端可以删除客户端保存的临时数据。
似乎我必须覆盖viewsets的create/update
,我想知道是否有更好的方法。
答案 0 :(得分:0)
您的一个选择是这样的:
views.py:
class PostDataWithClienID(APIView):
def post(self, request, client_id):
# Context needed if you need client_id while saving posted data
serializer = PostedDataSerializer(data=request.data,
context={'client_id': client_id})
if serializer.is_valid():
serializer.save()
return Response({'data': serializer.data,
'client_id': client_id},
status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
urls.py:
urlpatterns = [
...
url(r'^/(?P<client_id>[0-9]+)/post_data_with_client_id$', views.PostDataWithClienID.as_view()),
...
如果你想让它在响应中合并,你可以这样做:
class PostDataWithClienID(APIView):
def post(self, request, client_id):
# Context needed if you need client_id while saving posted data
serializer = PostedDataSerializer(data=request.data,
context={'client_id': client_id})
if serializer.is_valid():
serializer.save()
my_response_dict = serializer.data.copy()
my_response_dict.update({'client_id': client_id})
return Response(my_response_dict,
status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)