J'utilise le render_to_response
de Django pour renvoyer un document XML. Ce document XML particulier est destiné à une bibliothèque de graphiques Flash. La bibliothèque nécessite que le document XML commence par une BOM (marqueur d'ordre des octets). Comment puis-je faire en sorte que Django prépasse la nomenclature à la réponse?Ajoute la réponse BOM à XML de Django
Cela fonctionne pour insérer la nomenclature dans le modèle, mais ce n'est pas pratique car Emacs le supprime chaque fois que j'édite le fichier.
J'ai essayé de réécrire render_to_response
comme suit, mais il échoue parce que la nomenclature est en cours de codage 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)
J'imagine que c'est * UTF-8 dont nous parlons. Certains logiciels (typiquement dérivés de Microsoft) aiment mettre les nomenclatures en UTF-8 en dépit de leur inutilité et de leur nocivité. Un lecteur XML qui en nécessite un, cependant, il cassé et pas vraiment un lecteur XML du tout. – bobince
Il n'y a pas de nomenclature en UTF-8, car UTF-8 n'a pas d'ordre d'octets. Si certains logiciels dépendent de la présence d'octets aléatoires dans un fichier, c'est quelque chose de différent. –
@Vebjorn: J'ai mis à jour la réponse pour refléter votre question éditée. Votre code est presque déjà correct. –