Я новичок в мире DJango, только что начал свою первую работу на Python несколько месяцев назад (PHP dev за последнее десятилетие).Я работаю с Django REST API на конечной точке, где мне нужно вернуть строку XML, но, оглядываясь по сторонам, кажется, что ни один из встроенных средств визуализации не позволяет просто передать строку, которая будет возвращена как есть?
Я видел, что HTTPResponse работает, а Response - нет, и коллега сказал мне, что Response - лучший выбор и для создания средства визуализации.Я думал, что это кажется довольно простым на основе исходного кода, в основном это был минимум:
class PassThroughRenderer(BaseRenderer):
media_type = None
format = None
def render(self, data, accepted_media_type=None, renderer_context=None):
return data
Мое представление (немного обрезано, но только для некоторой модели памяти):
def post(self, request):
original_soap = request.body
try:
parsed_soap = xmltodict.parse(original_soap)
except xml.parsers.expat.ExpatError:
return Response(dicttoxml({'invalid_xml': True}), content_type='text/xml', status=422)
parsed_soap = self.strip_sf_prefix(parsed_soap)
config = yaml.load(settings.SALESFORCE_CRED)
organization_id = config['organization_id']
if parsed_soap['soapenv:Envelope']['soapenv:Body']['notifications']['OrganizationId'] != organization_id:
return Response(dicttoxml({'unauthorized': True}), content_type='text/xml', status=401)
return Response(SALESFORCE_RESPONSE, content_type='text/xml')
К сожалению, когда я запускаю это (добавив renderer_classes = (utils.PassThroughRenderer,)
в мой класс APIView), я получаю 'Request' object has no attribute 'accepted_renderer'
и трассировку, которая, кажется, не затрагивает ни один код, который я написал.