Django中接收并返回xml

介绍
  • 通常我们与自己的前端交互时,会采用标准的json数据;
  • 但是我们与其他第三方服务交互时,就需要将xml转化为json,处理完成后再将数据转化成xml返回;
  • 而djangorestframework官方推荐的第三方包,来回xml/dict转换的结果不一致,所以我自己实现了一个render。
我的依赖包
Django == 2.2.11
djangorestframework == 3.10.3
xmltodict
xmltodict的基本使用
import xmltodict
# xml to dict
xmltodict.parse(xml_data)
# dict to xml
xmltodict.unparse(dict_data)
结合Django返回response
# 自定义xml render
from rest_framework.renderers import BaseRenderer

class XMLRenderer(BaseRenderer):
    """
    Renderer which serializes to XML.
    """

    media_type = 'application/xml'
    format = 'xml'
    charset = 'utf-8'

    def render(self, data, accepted_media_type=None, renderer_context=None):
        """
        Renders `data` into serialized XML.
        """

        return xmltodict.unparse(data)

# view视图中指定render,将dict转化为xml返回
from rest_framework.viewsets import GenericViewSet
from rest_framework.response import Response

class View(GenericViewSet):
    def get(self, request, **kwargs):
        # 这一步指定accepted_renderer十分重要
        self.request.accepted_renderer = XMLRenderer()
        
        return Response(content, status=200, content_type='application/xml;charset=utf8')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容