2008-09-30 2 views
1

내 장고 애플 리케이션라는 이름의 필드에 다음 텍스트가 포함 된 Person 테이블, "세부 사항"이 있습니다왜 장고는 내 <script> 태그를 자동으로 이스케이프하지 않습니까?

< 스크립트 > 경고 ('안녕하세요'); </스크립트가 >

내 템플릿에 PersonForm.details를 호출 페이지가 따라 < 스크립트 >를 렌더링 (일명, 단어 "안녕하세요"와 경고가 표시됩니다). 나는 항상 Django 1.0 autoescaped 템플릿 내용을 기본적으로 생각했기 때문에이 동작에 혼란 스럽습니다.

여기에 무슨 일이 일어날 지 모릅니다.

업데이트 : 내 템플릿의 스 니펫은 다음과 같습니다. 정말 섹시한 아무것도 :

{{ person_form.details }} 

업데이트 2 : 나는 "탈출"을 시도했다 "강제 탈출"및 "escapejs". 이 작품들 중 어느 것도.

답변

4

값을 |로 표시해야합니다. 안전 내가 생각하는 (난 당신이 여기에 데이터베이스에서 값을 채우는 것 같은데요()?) :

{{ value|safe }} 

이 템플릿의 샘플을 게시 할 수 있을까요? 쉽게 뭐가 잘못 볼 수 있도록 할 수 있음

[편집] 당신은 당신이 값을 (그들이 안전하게) 탈출 원하는 건가요 .. 또는? 수동으로 필드를 탈출 시도 유무 :

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] 무엇 force_escape에 대한 :

{{ value|escape }} 

는 [Edit2가] 어쩌면 escapejs from the Django Project docs이와 관계있는 것입니다

{{ value|force_escape }} 

.. 그리고 그것은 명백한 것임을 압니다 만, 당신은 캐싱이 전혀 없다는 것을 확신합니다. n 당신의 브라우저? 나는 그 중 하나를 몇 번이나 넘어 봤다 ;-)

+0

"탈출"템플릿 태그를 사용하여 강제로 탈출하려했습니다. 주사위가 없다. 내가 원하는 것은 경고를 렌더링하지 않는 것입니다. 내 마음 속에서는 그 가치를 벗어날 것입니다. – Huuuze

+0

캐싱도 없습니다. 그것은 내 마음도 넘어 섰다. :) – Huuuze

+0

이상한 .. 오늘 밤에 내 DJango 설치를 시도해보고 내가 찾을 수 있는지 알아봐. –

0

발견. 일부 Ext 위젯에 데이터를 렌더링하는 데 사용하는 JSON 문자열이 원인입니다. Jon Cage에게 큰 감사를드립니다. 다른 출처에서 발생하는 문제에도 불구하고 응답이 받아 들여졌습니다.

관련 문제