我正在體驗我會認爲有些奇怪的行爲。具體來說,如果我有一個這樣的字符串:Django Double Escaping Quotes etc
1984年:課程單位
由Donald R.霍格,中心學習,喬治·奧威爾
「用於學習出版中心」 - 封面。
這將導致以下通過Django模板系統被自動轉義後:
1984年:課程單位
由Donald R.霍格,中心學習,喬治·奧威爾
&「學習發佈中心&」 - 封面。
的問題似乎是,「(引號),這應該成爲"
被轉義兩次,導致&"
,這將導致奇怪的看的格式。我使用Django 1.0.2,所以它應該是最新的(儘管我應該注意到我使用的是Ubuntu 9.04包括的軟件包python-django),但是這種行爲似乎與預期的行爲相反。
我看了一下django.utils.html .py其中包含實際功能:
def escape (HTML):
「」 「返回與&號,報價和插入記號給定的HTML編碼。」 「」
return mark_safe(force_unicode(html).replace('&','&').replace('<','<').replace('>', '>').replace('"', '"').replace("'",'''))
逃逸= allow_lazy(逃生,Unicode)的
無論如何,看起來它應該在其他任何事情之前逃脫&,這很好。所以我的懷疑是它被稱爲兩次。有什麼想法嗎?
謝謝。
更新:我很懷疑它可能與Ubuntu的Django有關,它被列爲「1.0.2-1」,因此我安裝了「1.0.2-final」,並且遇到了同樣的問題。
這是我期望的行爲,但這不是我所得到的。例如,你在上面說msg =「&== & in HTML」我會得到這樣的東西:「& & == & & amp; in HTML」就是說,它執行一次轉義,然後轉義&在逃脫的結果。儘管如此,感謝您的及時迴應! – philipk 2009-07-21 08:00:38