Django template Escape

le système Django templating fournit quelques options (filtres) pour échapper au contenu dans le html, mais elles sont un peu déroutantes pour moi en tant que débutant. Disons que je suis un tutoriel pour faire un blog simple, et le contenu du blog doit être échappé - je fais confiance au contenu parce que je suis le seul à l'éditer. La question est donc de savoir si je dois le faire comme {{ post.content|autoescape }},{{ post.content|escape }}, ou {{ post.content|safe }} dans le html?

Merci

modifier: quel filtre devrais-je utiliser pour avoir des caractères spéciaux convertis en entités html automatiquement?

EDIT 2: je viens de réaliser qu'autoescape n'est pas un filtre valide.

28
demandé sur vishes_shell 2012-07-03 11:54:45

4 réponses

l'échappement HTML est activé par défaut dans les modèles Django.

Autoescape est une balise. pas un filtre:

{% autoescape on %}
    {{ post.content }}
{% endautoescape %}

le filtre' escape ' échappe au HTML d'une chaîne. Plus précisément, il fait ces remplacements:

  • < converti à &lt;
  • > est convertie &gt;
  • ' (apostrophe) est converti en &#39;
  • " (double quote) est converti en &quot;
  • et est converti à &amp;

le 'force_escape 'est presque identique à' escape ' sauf pour quelques cas de coin.

le filtre' safe ' marquera votre contenu comme étant sûr, donc il ne sera pas échappé (sera envoyé au navigateur tel quel).

quel filtre dois-je utiliser pour convertir automatiquement des caractères spéciaux en entités html?

Eh bien, vous voulez dire, comme convertir Ã