In Django, How Do I Get Escaped Html In Httpresponse?
The following code in one of my views returns unescaped html string which cannot be parsed in frontend since it is an Ajax request. return render_to_response(template_name, {
Solution 1:
Lakshman Prasad's answer is technically correct, but a bit cumbersome. A better way to escape text would be (as suggested in a comment by miku above):
from django.utils.htmlimportescapereturnHttpResponse(escape(some_string))
Solution 2:
To return just plain HTML to the client from within your view, use django.http.HttpResponse
from django.http import HttpResponse
defview(request)
# Do stuff here
output = '''
<html>
<head>
<title>Hey mum!</title>
</head>
</html>'''return HttpResponse(output)
To prevent the Django templating system from escaping HTML in a template, just use the |safe
filter:
response = "<img src='cats.png'/>"# Meanwhile, in the template...
<div id="response">
{{response|safe}}
</div>
Solution 3:
It should escape by default.
But, if you want to, you can explicitly force escaping.
from django.utils.safestring import mark_for_escaping
return HttpResponse(mark_for_escaping(loader.render_to_string(""""Render Response Syntax"""))
Post a Comment for "In Django, How Do I Get Escaped Html In Httpresponse?"