Python render_template retourne texte HTML au lieu du HTML

Fermé
Anno - 25 juil. 2022 à 15:12
 pic-vert_furtif - 25 juil. 2022 à 17:04

Bonjour,

J'aimerais pouvoir récupérer sur mon serveur Flask (en Python) une page web dont certains bouts ont étés ajoutés grâce à la méthode render_template de Flask

Plus précisément :

J'ai une page html (simplifiée) :

<head>

</head>

<body>
{{ codeHTML }}
</body>

et j'aimerais la compléter pour l'envoyer sur mon serveur grâce à la méthode render_template sous la forme suivante :

render_temlate("page.html", code=codeHTML)

Malheureusement le code HTML ne s'affiche pas comme prévu : il s'affiche en tant que texte

Est-ce que quelqu'un aurait une solution

Merci ????

@+ 

A voir également:

2 réponses

NHenry Messages postés 15175 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 25 décembre 2024 350
25 juil. 2022 à 16:51

Par défaut les inclusions {{ ... }} d'informations échappent les caractères HTML (évite les failles de XSS et autre du même genre).

Il faut probablement ajouter un filtre, par exemple sur Twig, il faut mettre {{ CodeHTML|raw }}.

Selon https://flask.palletsprojects.com/en/2.1.x/templating/
Tu peux utiliser par exemple :

{% autoescape false %}
    <p>autoescaping is disabled here
    <p>{{ will_not_be_escaped }}
{% endautoescape %}

Plus de détail dans la section "Controlling Autoescaping".


0

Bonjour, ce n'est tout de même pas clair ce que tu énonces.

Dans ton template il y a un codeHTML, et dans ton code python t'as un « code » qui n'est pas dans ton template, cela devrait donc être

render_template("page.html", codeHTML=codeHTML)

Que vaut la variable codeHTML ? C'est elle qui est du html ? Pourquoi ce html n'est pas dans un autre template que tu incluerais dans celui-là ?

Bon, mon message bogue, et je ne sais pas pourquoi...

0