Pergunta

Eu preciso que o html retornado usando render_to_response para ser escapado. Não consigo encontrar nenhuma documentação adequada. Alguém pode apontar em alguma direção?

O código é:

return render_to_response(template_name, {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))

Aqui eu preciso que o texto HTML de resposta seja escape. Eu sei que é a leitura do arquivo de modelo na string e escape com re.escape () e depois renderizá -lo. o que é uma maneira mais limpa e mais simples de fazer isso ??

Foi útil?

Solução

String passada das visualizações para os modelos via render_to_response são escapados por padrão.

Ver: http://docs.djangoproject.com/en/dev/topics/templates/#id2

Por padrão, no Django, todo modelo escapa automaticamente na saída de cada tag variável. Especificamente, esses cinco caracteres estão escapados:

< is converted to &lt;
> is converted to &gt;
' (single quote) is converted to &#39;
" (double quote) is converted to &quot;
& is converted to &amp;

Novamente, enfatizamos que esse comportamento está ligado por padrão.

Outras dicas

Parece que você deseja que a totalidade da resposta seja escapada - isso é verdade? Parece um pouco estranho, mas você certamente pode fazê -lo.

import django.utils.html as html
string = render_to_string(<all of the args to render_to_response>)
escaped_string = html.escape(string)
return HttpResponse(escaped_string)

Não tenho muita certeza do que a pessoa/navegador do outro lado faria Faz Com isso, mas parece o que você estava pedindo.

Você pode usar o escape filtro de modelo ou o autoescape Tag de modelo. Ver http://docs.djangoproject.com/en/dev/ref/templates/builtins/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top