tag scrap requests read parse fromstring python flask

python - scrap - ¿Cómo mostrar el contenido html a través de los mensajes del matraz?



scrap html python (3)

El uso de {{message|safe}} funcionará, pero también abre la puerta para que un atacante inyecte HTML o Javascript malintencionado en su página, también conocido como un ataque XSS. Más información here si estás interesado.

Cuando sea posible, un enfoque más seguro es envolver su cadena en un objeto de marcado antes de pasarlo a la plantilla:

Código Python:

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

Plantilla Jinja2:

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

Entiendo que flash() solo toma una cadena y la muestra en la página redirigida. Estoy tratando de enviar html a través de flash

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>

Pero se muestra como una cadena <h1>Voila! Platform is ready to used</h1> <h1>Voila! Platform is ready to used</h1> Hay alguna forma de superar esto.


En los casos en que es posible que desee controlar el css aplicado en función del estado del mensaje (Success | Error), el siguiente código puede ser útil

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


Utilice el filtro safe :

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