[英]Custom django rest parser
這是我的代碼:
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>
為什么低於和大於符號顯示為&lt和&gt而不是<和>
該代碼僅用於嘗試發布base64字符串並將其解碼為xml文件。
這是因為用於呈現響應的呈現器是HTMLRenderer。 DRF 通過內容協商確定要使用的渲染器:
視圖的有效渲染器集始終定義為類列表。 進入視圖后,REST框架將對傳入的請求執行內容協商,並確定最合適的渲染器以滿足該請求。
內容協商的基本過程涉及檢查請求的Accept報頭,以確定它在響應中期望的媒體類型。 可選地,URL上的格式后綴可以用於顯式請求特定的表示形式。 例如,URL http://example.com/api/users_count.json可能是始終返回JSON數據的終結點。
在URL的末尾使用.xml ,它應該選擇XMLRenderer。
為了將響應限制為xml,請在視圖中指定XMLRenderer:
class MyView(APIView):
renderer_classes = (XMLRenderer,)
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.