tarantino pelicula descargar cantante django

pelicula - django wikipedia



¿Cómo envío HTML en un mensaje en el nuevo marco de mensajes de Django? (5)

Estoy tratando de mostrar un poco de html en un mensaje que se muestra a través del nuevo marco de mensajes de Django. Específicamente, estoy haciendo esto a través del método ModelAdmin.message_user, que es solo una envoltura delgada alrededor de los mensajes ():

def message_user(self, request, message): """ Send a message to the user. The default implementation posts a message using the django.contrib.messages backend. """ messages.info(request, message)

Todo lo que he intentado hasta ahora parece mostrar HTML escapado.

self.message_user(request, "<a href=/"http://www.google.com/">Here''s google!</a>")

No funciona, ni lo hace:

from django.utils.safestring import mark_safe ... self.message_user(request, mark_safe("<a href=/"http://www.google.com/">Here''s google!</a>"))

La visualización del código de plantilla en la plantilla de administrador base.html es bastante sencilla:

{% if messages %} <ul class="messagelist">{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul> {% endif %}

Así que no estoy exactamente seguro de lo que estoy haciendo mal.

Pensamientos o guías muy apreciados, ¡gracias!


¿Has probado {{ message | safe }} {{ message | safe }} ?

En la plantilla del sistema de Django, las variables de plantilla siempre se escapan, a menos que las especifique como seguras con el filtro safe . Este valor predeterminado hace que incluso el no consciente esté protegido contra un ataque de inyección.

No estoy seguro de cómo eso interactúa con mark_safe, pero tal vez sucedió algo que lo hizo inseguro de nuevo.




Esto funcionó para mí (Django 1.11):

from django.contrib import messages from django.utils.safestring import mark_safe messages.info(request, mark_safe(''This is link to <a href="http://google.com">http://google.com</a>''))


Otra opción es usar la palabra clave extra_tags arg para indicar que un mensaje es seguro. P.ej

messages.error(request, ''Here is a <a href="/">link</a>'', extra_tags=''safe'')

luego usa la lógica de la plantilla para usar el filtro seguro

{% for message in messages %} <li class="{{ message.tags }}"> {% if ''safe'' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %} </li> {% endfor %}