gpt4 book ai didi

Django REST Framework - XMLRenderer 修改我的简单 XML 响应

转载 作者:行者123 更新时间:2023-12-05 04:43:20 24 4
gpt4 key购买 nike

我想发送一个简单的 CXML 文本字符串,作为对 Django View 的 DRF POST 请求的响应(请参阅下面的我的 Django View )

<?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>

(上面的字符串是我下面的 django View 中 'response_cxml' 变量的值)

但是django发送和远程应用接收的是:

<?xml version="1.0" encoding="utf-8"?>
<root>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;!DOCTYPE cXML SYSTEM
"http://xml.cXML.org/schemas/cXML/1.2.011/cXML.dtd"&gt;&lt;cXML payloadID="2021-10-
19T05:10:41.115609@example.com" timestamp="2021-10-
19T05:10:41.115674+00:00"&gt;&lt;Response&gt;&lt;Status code="200" text="Success"
/&gt;&lt;/Response&gt;&lt;/cXML&gt;</root>

我认为 XMLREnderer 正在添加额外的重复版本标签和“根”标签。它还对 xml 字符进行 urlencoding,例如 <、> 等。如何防止 XMLREnderer 修改我的响应? 发件人 HTTP header 是 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'))

最佳答案

@renderer_classes([XMLRenderer]) - 不需要。不需要 Response()。我使用了 HTTPResponse,一切顺利。

从 django.http 导入 HttpResponse

返回 HttpResponse(response_cxml,content_type="text/xml")

关于Django REST Framework - XMLRenderer 修改我的简单 XML 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69626137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com