In Django, How do I get escaped html in HttpResponse?

后端 未结 3 1100
挽巷
挽巷 2021-01-11 15:55

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         


        
相关标签:
3条回答
  • 2021-01-11 16:29

    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.html import escape
    return HttpResponse(escape(some_string))
    
    0 讨论(0)
  • 2021-01-11 16:37

    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"""))
    
    0 讨论(0)
  • 2021-01-11 16:43

    To return just plain HTML to the client from within your view, use 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)
    

    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>
    
    0 讨论(0)
提交回复
热议问题