13

私のビューの 1 つにある次のコードは、Ajax リクエストであるため、フロントエンドで解析できないエスケープされていない html 文字列を返します。

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))

これを修正する最も簡単な方法は何ですか? 前もって感謝します..

4

3 に答える 3

30

Lakshman Prasadの答えは技術的には正しいですが、少し面倒です。テキストをエスケープするより良い方法は次のとおりです(上記のミクによるコメントで提案されているように):

from django.utils.html import escape
return HttpResponse(escape(some_string))
于 2012-07-19T10:06:39.140 に答える
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>
于 2009-12-22T13:16:11.487 に答える
1

デフォルトではエスケープする必要があります。

ただし、必要に応じて、明示的にエスケープを強制できます。

from django.utils.safestring import mark_for_escaping
return HttpResponse(mark_for_escaping(loader.render_to_string(""""Render Response Syntax"""))
于 2009-12-22T14:45:55.703 に答える