Por que não vai Django auto-escapar minhas tags <script>?

votos
1

Meu aplicativo Django tem uma mesa de Pessoa, que contém o seguinte texto em um campo chamado detalhes:

<Script> alert ( 'Olá'); </ script>

Quando eu chamar PersonForm.details no meu modelo, a página torna o <script> em conformidade (aka, um alerta com a palavra Olá é exibido). Eu estou confuso com este comportamento, porque eu sempre pensei Django 1.0 autoescaped conteúdo do modelo como padrão.

Alguma idéia do que pode estar acontecendo aqui?

UPDATE: Aqui está o trecho do meu modelo. Nada terrivelmente sexy:

` person_form`.`details `

UPDATE 2: Eu tentei escape, força-escape, e escapejs. Nenhum destes trabalhos.

Publicado 30/09/2008 em 18:04
fonte usuário
Em outras línguas...                            


2 respostas

votos
4

Você precisa marcar os valores como | seguro Eu acho que (eu estou supondo que você está preenchendo o valor do banco de dados aqui ()?):

{{ value|safe }}

Você poderia postar uma amostra do modelo? Pode torná-lo mais fácil de ver o que está errado

[Editar] ..ou você está dizendo que você quer para escapar os valores (torná-los seguros)? Você tentou escapar manualmente o campo:

{{ value|escape }}

[Edit2] Talvez escapejs dos docs Django projeto é relevent:

escapejs

New in Django 1.0.

Escapes characters for use in JavaScript strings. This does not make the string safe for use in HTML, but does protect you from syntax errors when using templates to generate JavaScript/JSON.

[Edit3] E sobre force_escape:

    {{ value|force_escape }}

... e eu sei que é um exemplo óbvio, mas você está absolutamente certo que você não tem qualquer cache acontecendo no seu navegador? Eu tropeçou em que um algumas vezes me ;-)

Respondeu 30/09/2008 em 18:06
fonte usuário

votos
0

Encontrado o problema. A cadeia de caracteres JSON que estou usando para processar dados para alguns widgets Ext é o culpado. Big graças a Jon Cage. Resposta aceite, apesar do problema que está sendo causado por outra fonte.

Respondeu 30/09/2008 em 18:26
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more