Python render_template retourne texte HTML au lieu du HTML

Anno -  
 pic-vert_furtif -

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 ????

@+ 

2 réponses

  1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     

    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
  2. pic-vert_furtif
     

    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