2008-09-30 46 views
1

我的Django的應用程序有一個Person表,其中包含了一場名爲下面的文字「細節」:爲什麼Django不能自動轉義我的<script>標籤?

<腳本>警報(「你好」); < /腳本>

當我打電話PersonForm.details在我的模板,頁面呈現相應的<腳本>(亦稱,則顯示單詞「你好」的警報)。我很困惑這種行爲,因爲默認情況下我一直認爲Django 1.0 autoescaped模板內容。

任何想法可能會發生在這裏?

更新:這是我的模板片段。沒有什麼可怕的性感:

{{ person_form.details }} 

更新2:我試圖 「逃離」, 「力逃逸」 和 「escapejs」。這些都不起作用。

回答

4

您需要將值標記爲|安全,我認爲(我猜你是在填充值從數據庫這裏()):

{{ value|safe }} 

你可以發佈模板的樣本?可能更容易看到什麼是錯的

[編輯] ..或者你是說你想逃脫值(使他們安全的)?您是否嘗試過手動逃離現場:

{{ value|escape }} 

[EDIT2]也許escapejs from the Django Project docs是培訓相關:

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|force_escape }} 

..我知道這很明顯,但你絕對肯定你沒有任何緩存你的瀏覽器?我已經絆倒了那幾次我自己;-)

+0

我試圖強行轉義使用「轉義」模板標記。沒有骰子。 我想*它要做的不是呈現警報 - 在我看來,這是爲了逃避價值。 – Huuuze 2008-09-30 17:14:27

0

發現問題。我用來將數據呈現給某些Ext小部件的JSON字符串是罪魁禍首。非常感謝Jon Cage。儘管問題是由其他來源引起的,但仍可接受答案。

相關問題