2013-08-14 16 views
14

Capisco che flash() accetta solo la stringa e visualizza quello nella pagina reindirizzata. mi sto cercando di inviare HTML tramite FlashCome visualizzare il contenuto html attraverso i messaggi del pallone?

message = "<h1>Voila! Platform is ready to used</h1>" 
flash(message) 
return render_template('output.html') 

output.html

<div class="flashes"> 
    {% for message in get_flashed_messages()%} 
    {{ message }} 
    {% endfor %} 
</div> 

ma è la visualizzazione come stringa <h1>Voila! Platform is ready to used</h1> non v'è alcun modo per superare questo.

+0

Si prega di aggiornare la risposta accettata, seconda risposta è la risposta giusta. @ naga4ce –

risposta

27

Utilizzando {{message|safe}} funzionerà, ma apre anche la porta per un utente malintenzionato di iniettare dannoso HTML o JavaScript nella tua pagina, noto anche un attacco XSS. Maggiori informazioni here se sei interessato.

Ove possibile, un approccio più sicuro è quello di wrap your string in a Markup object before passing it to the template:

codice Python:

from flask import Markup 

message = Markup("<h1>Voila! Platform is ready to used</h1>") 
flash(message) 
return render_template('output.html') 

Jinja2 Template:

<div class="flashes"> 
    {% for message in get_flashed_messages() %} 
    {{ message }} 
    {% endfor %} 
</div> 
+0

Ottima risposta. 'ma ci sono ancora altri posti in cui bisogna stare attenti: chiamare Markup sui dati inviati dagli utenti trovati nel collegamento del documento ufficiale. Puoi spiegare questo? – arsho

10

Utilizzare la safe filter:

<div class="flashes"> 
    {% for message in get_flashed_messages()%} 
    {{ message|safe }} 
    {% endfor %} 
</div> 
+1

Grazie uomo ha lavorato come un campione :) – naga4ce

3

per i casi in cui si potrebbe desiderare di controllare il css applicato a seconda dello stato del messaggio (Success | Errore), il seguente codice può essere utile

{% for category, msg in get_flashed_messages(with_categories=true) %} 

    <div class="alert {{ category }} alert-dismissible" role="alert"> 
          <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button> 
          {{ msg|safe }} 
    </div> 

{% endfor%}

Problemi correlati