2013-08-14 4 views
14

मुझे लगता है कि flash() केवल स्ट्रिंग लेता है और पुनर्निर्देशित पृष्ठ में प्रदर्शित करता है। मैं output.htmlफ्लास्क संदेशों के माध्यम से एचटीएमएल सामग्री कैसे प्रदर्शित करें?

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

फ़्लैश

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

के माध्यम से एचटीएमएल भेजने की कोशिश कर हूँ लेकिन के रूप में स्ट्रिंग <h1>Voila! Platform is ready to used</h1> वहाँ किसी भी तरह से इस पर काबू पाने के लिए है यह प्रदर्शित कर रहा है।

+0

स्वीकार किए जाते हैं जवाब अपडेट कर लें, दूसरा जवाब सही जवाब है हो सकता है। @ naga4ce –

उत्तर

27

{{message|safe}} का उपयोग करते हुए काम करेंगे, लेकिन यह भी एक हमलावर अपने पृष्ठ में दुर्भावनापूर्ण HTML या जावास्क्रिप्ट इंजेक्षन करने के लिए दरवाजा खुल जाता है, यह भी एक एक XSS हमले में जाना जाता है। यदि आप रुचि रखते हैं तो अधिक जानकारी here

जहां संभव हो, एक अधिक सुरक्षित दृष्टिकोण wrap your string in a Markup object before passing it to the template: है

अजगर कोड:

from flask import Markup 

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

Jinja2 टेम्पलेट:

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

उत्कृष्ट जवाब। 'लेकिन अभी भी ऐसे अन्य स्थान हैं जहां आपको सावधान रहना होगा: आधिकारिक दस्तावेज़ लिंक पर पाए गए उपयोगकर्ताओं द्वारा सबमिट किए गए डेटा पर मार्कअप को कॉल करना। क्या आप इसे समझा सकते हैं? – arsho

10

उपयोग safe filter:

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

धन्यवाद आदमी एक चैंप की तरह काम करता है :) – naga4ce

3

मामलों में जहां आप नियंत्रित करना चाहते हो सकता है सीएसएस संदेश की स्थिति (सफलता | त्रुटि), निम्नलिखित कोड उपयोगी

{% 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%}

संबंधित मुद्दे