Como faço para modificar o objeto HTTPRESPONSE em Django?
-
20-09-2019 - |
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 ??
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 <
> is converted to >
' (single quote) is converted to '
" (double quote) is converted to "
& is converted to &
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/