I'm using django messages and i want to put an hyperlink in it.
view.py:
from django.contrib import messages
def my_view(request):
messages.info(request,"My message with an <a href='/url'>hyperlink</a>")
Obviously, in my page, i see the html code and no hyperlink. How to treat the message as an htlml code ?
Hope this is clear.
If you don't want to turn off autoescaping on all messages/templates, you can use mark_safe for that particular message:
from django.utils.safestring import mark_safe
messages.info(request, mark_safe("My message with an <a href='/url'>hyperlink</a>"))
And if you maybe have some unsafe parts of your message, you can use cgi.escape to escape those parts.
from cgi import escape
messages.info(request, mark_safe("%s <a href='/url'>hyperlink</a>" % escape(unsafe_value)))
Strings in Django templates are automatically escaped. You don't want your raw HTML to be auto-escaped, so you should either pass the string to the safe
filter:
{{ message|safe }}
or disable autoescape with the autoescape
tag:
{% autoescape off %}
{{ message }}
{% endautoescape %}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With