Bonjour Je souhaite disposer d'une version en texte brut de mon contenu. J'ai donc un modèle distinct pour cela. J'appelle render_to_response
avec mimetype="text/plain"
mais je veux dire à un navigateur ouvrant cette page dans la réponse http que le contenu est codé en utf-8. Comment puis-je faire cela (par exemple, que dois-je ajouter à render_to_response
)?Envoyer un en-tête de codage de contenu dans django
5
A
Répondre
7
Il suffit d'ajouter à charset MIMETYPE comme ceci:
mimetype="text/html; charset=utf-8"
Qu'est-ce qui se passe vraiment derrière la scène est que mimetype est mis hors kwargs en render_to_response
.
httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
et envoyé à HttpResponse
qui définit comme content_type
:
if mimetype:
content_type = mimetype # For backwards compatibility
if not content_type:
content_type = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE,
settings.DEFAULT_CHARSET)
Dans les nouvelles versions de Django le paramètre est appelé content_type insted de mimetype. –