这是我的代码:
class lista_libros(APIView):
def post(self, request, format=None): #, format=None
cadena64 = request.data
xmlfile = base64.b64decode(cadena64)
#serializer = PruebaSerializer(data = xmlfile)
#if serializer.is_valid():
#serializer.save()
#return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(xmlfile)
这就是我得到的:
<?xml version="1.0" encoding="utf-8"?>
<root><libro>
<nombre>Juego de tronos</nombre>
<autor>Pablo Perez.</autor>
<categoria>Fantasia</categoria>
<editorial>Mexicana</editorial>
<fecha_pub>1992</fecha_pub>
<no_pag>5000</no_pag>
</libro></root>
为什么较低和较大的符号显示为&amp; lt和&amp; gt而不是&lt;和&gt;
此代码仅用于尝试POST一个base64字符串并将其解码为xml文件。
答案 0 :(得分:0)
这是因为用于呈现响应的渲染器是HTMLRenderer。 DRF确定渲染器使用by using content negotiation:
视图的有效渲染器集始终定义为列表 类。进入视图时,REST框架将执行内容 对传入请求进行协商,并确定最多 适当的渲染器以满足请求。
内容协商的基本过程包括检查 请求的Accept标头,以确定它所期望的媒体类型 响应。可选地,可以使用URL上的格式后缀 明确请求特定的表示。例如URL http://example.com/api/users_count.json可能是一个终点 总是返回JSON数据。
在网址末尾使用 .xml ,它应该选择XMLRenderer。
为了限制对xml的响应,请在您查看中指定XMLRenderer:
class MyView(APIView):
renderer_classes = (XMLRenderer,)
...