В Django, Как я получаю завершенный HTML в HttpResponse?

Следующий код в одном из моих представлений возвращает незавершенную строку HTML, которая не может быть проанализирована в frontend, так как это - запрос 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))

Что самый простой путь состоит в том, чтобы исправить это? Заранее спасибо..

10
задан Nullpoet 22 December 2009 в 13:07
поделиться

2 ответа

Он должен экранировать по умолчанию.

Но, если вы хотите, вы можете явно принудительно экранировать.

from django.utils.safestring import mark_for_escaping
return HttpResponse(mark_for_escaping(loader.render_to_string(""""Render Response Syntax"""))
1
ответ дан 3 December 2019 в 15:35
поделиться

Чтобы вернуть клиенту простой 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>
5
ответ дан 3 December 2019 в 15:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: