在Django中,如何在HttpResponse中获取转义的HTML?
我在我的一个视图中写的代码返回了一个没有转义的HTML字符串,这样在前端就无法解析,因为这是一个Ajax请求。
return render_to_response(template_name, {
'form': form,
redirect_field_name: redirect_to,
'site': current_site,
'site_name': current_site.name,
}, context_instance=RequestContext(request))
有什么简单的方法可以解决这个问题吗?提前谢谢你们。
5 个回答
1
默认情况下,它应该会自动进行转义。
不过,如果你想的话,可以明确地强制进行转义。
from django.utils.safestring import mark_for_escaping
return HttpResponse(mark_for_escaping(loader.render_to_string(""""Render Response Syntax"""))
6
如果你想从你的视图中直接返回简单的HTML给客户端,可以使用 django.http.HttpResponse
。
from django.http import HttpResponse
def view(request)
# Do stuff here
output = '''
<html>
<head>
<title>Hey mum!</title>
</head>
</html>'''
return HttpResponse(output)
如果你想让Django的模板系统不要对模板中的HTML进行转义,可以使用 |safe
这个过滤器:
response = "<img src='cats.png'/>"
# Meanwhile, in the template...
<div id="response">
{{response|safe}}
</div>
37
Lakshman Prasad的回答在技术上是正确的,但有点复杂。更简单的方式来转义文本是(正如上面miku的评论所建议的):
from django.utils.html import escape
return HttpResponse(escape(some_string))