Django의 render_to_response
을 사용하여 XML 문서를 반환합니다. 이 특정 XML 문서는 플래시 기반 차트 라이브러리를위한 것입니다. 라이브러리는 XML 문서가 BOM (byte order marker)으로 시작해야합니다. 어떻게하면 장고가 응답에 BOM을 미리 만들 수 있습니까?장고의 BOM to XML 응답 앞에
BOM을 템플릿에 삽입하기 위해 작동하지만 Emacs가 파일을 편집 할 때마다 제거하기 때문에 불편합니다.
나는 다음과 같이 render_to_response
를 다시 작성하려고 노력하지만, BOM은 UTF-8로 인코딩되고 있기 때문에 그것은 실패
def render_to_response(*args, **kwargs):
bom = kwargs.pop('bom', False)
httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
s = django.template.loader.render_to_string(*args, **kwargs)
if bom:
s = u'\xef\xbb\xbf' + s
return HttpResponse(s, **httpresponse_kwargs)
내가 * UTF-8이라고 말하고 싶다. 일부 (일반적으로 Microsoft에서 파생 된) 소프트웨어는 무의미하고 해롭지 만 BOM을 UTF-8에 넣는 것을 좋아합니다. XML 판독기가 필요하지만 XML 판독기가 전혀 필요하지 않습니다. – bobince
UTF-8에는 바이트 순서가 없으므로 BOM과 같은 것은 UTF-8에 없습니다. 일부 소프트웨어가 임의의 가비지 바이트가 파일에 존재하는지 여부에 따라 달라지면 이는 다른 것입니다. –
@Vebjorn : 편집 한 질문을 반영하도록 답변을 업데이트했습니다. 코드가 이미 거의 정확합니다. –