美文网首页
Django中接收并返回xml

Django中接收并返回xml

作者: DjangoUnchained | 来源:发表于2020-05-08 11:43 被阅读0次
介绍
  • 通常我们与自己的前端交互时,会采用标准的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')

相关文章

网友评论

      本文标题:Django中接收并返回xml

      本文链接:https://www.haomeiwen.com/subject/ohaxnhtx.html