Django REST Framework - XMLRenderer, изменяющий мой простой XML-ответ
Я хочу отправить простую текстовую строку CXML, как показано ниже, в ответ на запрос DRF POST в представление django (см. мое представление django ниже)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE cXML SYSTEM
"http://xml.cXML.org/schemas/cXML/1.2.011/cXML.dtd"><cXML payloadID="2021-10-
19T03:57:08.416995@example.com" timestamp="2021-10-19T04:01:56.530426+00:00"><Response><Status
code="200" text="Success" /></Response></cXML>
(Вышеуказанная строка является значением переменной 'response_cxml' в моем представлении django ниже)
Но то, что django отправляет и получает удаленное приложение, это:
<?xml version="1.0" encoding="utf-8"?>
<root><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE cXML SYSTEM
"http://xml.cXML.org/schemas/cXML/1.2.011/cXML.dtd"><cXML payloadID="2021-10-
19T05:10:41.115609@example.com" timestamp="2021-10-
19T05:10:41.115674+00:00"><Response><Status code="200" text="Success"
/></Response></cXML></root>
XMLREnderer, как я полагаю, добавляет дополнительный дублирующий тег версии и тег 'root'. Он также кодирует символы xml, такие как <, > и т.д.Как я могу предотвратить изменение ответа XMLREnderer? HTTP-заголовки отправителя Accept="text/xml и content-type='text/xml'
Мое мнение:
@csrf_exempt
@api_view(['PUT','POST'])
@authentication_classes((TokenAuthentication,))
@permission_classes((IsAuthenticated,))
@renderer_classes([XMLRenderer])
@parser_classes([XMLParser])
def purchase_order(request):
"""
Receives the purchase order cXML and saves PO details to database.
Sends a 200 response back
"""
if request.method == 'PUT' or request.method == 'POST':
po_cxml = request.body.decode()
response_cxml = process_po_cxml(po_cxml)
return Response( response_cxml.encode('utf-8'))