在DRF文档示例found here中:
FROM mhart/alpine-node:6.2.0
上述示例在class SnippetList(APIView):
"""
List all snippets, or create a new snippet.
"""
def get(self, request, format=None):
snippets = Snippet.objects.all()
serializer = SnippetSerializer(snippets, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = SnippetSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
和format
方法中都有一个未使用的get()
参数。我已逐步完成了post()
来源,但我找不到调度程序将此参数传递给rest_framework
或get()
方法的任何实例。该参数是否需要出现在方法定义中?如果是这样,它用于什么?什么时候使用?
答案 0 :(得分:8)
我发现使用format suffixes时会使用format
参数。所以现在我想找出如何使用它,因为处理程序代码中的任何内容似乎都没有使用它,但它仍然有效(魔术行为)。
我继续使用pdb
跟踪视图的执行情况,发现APIView.initial()
从kwargs
中提取此参数,并在调用APIView.perform_content_negotiation()
时使用它选择要在响应中使用的渲染器和媒体类型。
答案 1 :(得分:4)
Basiclly这个“format”参数用于定义输出响应format,如:csv,json等
答案 2 :(得分:0)
考虑示例: 假设您希望收到您的api端点的响应的“ html”格式 因此,您可以轻松地从网址本身进行查询,例如 https://api.example.com/users/?format=html 现在,如果您的视图没有使用format = None的参数,则可以使用。
但是要禁用此行为,必须将format = None