2009-12-22 9 views
0

J'ai besoin que le code html renvoyé en utilisant render_to_response soit échappé. Je n'arrive pas à trouver la documentation appropriée. Quelqu'un peut-il pointer dans une certaine direction?Comment modifier l'objet HttpResponse dans django?

le code est:

return render_to_response(template_name, {return render_to_response(template_name, { 
      'form': form, 
      redirect_field_name: redirect_to, 
      'site': current_site, 
      'site_name': current_site.name, 
     }, context_instance=RequestContext(request)) 

Ici je besoin le texte html de réponse à échapper. Je sais que c'est en train de lire le fichier modèle dans une chaîne et de l'échapper avec re.escape(), puis de le restituer. Quel est un moyen plus propre et plus simple de faire cela?

Répondre

2

Les chaînes passées à partir des vues vers les modèles via render_to_response sont échappées par défaut.

Voir: http://docs.djangoproject.com/en/dev/topics/templates/#id2

Par défaut dans Django, chaque modèle échappe automatiquement la sortie de chaque balise variable. Plus précisément, ces cinq personnages sont échappés:

< is converted to &lt; 
> is converted to &gt; 
' (single quote) is converted to &#39; 
" (double quote) is converted to &quot; 
& is converted to &amp; 

Encore une fois, nous soulignons que ce comportement est activé par défaut.

2

Il semble que vous vouliez que l'intégralité de la réponse soit échappée - est-ce vrai? Cela semble un peu étrange, mais vous pouvez certainement le faire.

import django.utils.html as html 
string = render_to_string(<all of the args to render_to_response>) 
escaped_string = html.escape(string) 
return HttpResponse(escaped_string) 

Je ne suis pas sûr de ce que la personne/navigateur à l'autre bout se faire avec cela, mais cela ressemble à ce que vous demandez.