2010-08-23 22 views
4

我有點困惑,因爲它似乎Django模板具有可選的HTML過濾器,但這似乎是自動發生..我做這個演示應用程序,用戶將執行一個操作,調用一個python腳本,檢索url,然後我想在一個新窗口中顯示它..它的一切都很好,除了顯示返回時,HTML以這種格式進行消毒(我在查看頁面源時看到了這一點,在瀏覽器中顯示爲普通HTML :Django,將HTML放入模板時自動處理HTML「消毒」,如何阻止它?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="content-type" /><script type="text/javascript">//<![CDATA[ 
si_ST=new Date 

這是同一的普通的HTML版本:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="content-type" /><script type="text/javascript">//<![CDATA[ si_ST=new Date //]]></script><script type="text/javascript">//<![CDATA[ _G={ST:(si_ST?si_ST:new Date),Mkt:"en- 

我舉st輸出到我的html模板中的基本塊,該模板沒有其他格式(沒有HTML等),只有1塊這裏輸出去..任何建議,爲什麼發生這種情況,以及如何顯示常規的HTML(所以它會顯示在瀏覽器的頁面,而不是HTML文本)表示讚賞..謝謝

回答

8

使用安全過濾器:如果你需要你的模板這樣的處理(也就是說,如果你發現自己使用|safe一遍又一遍)的大部分地區

{{ myvariable|safe }} 

,您可以禁用autoescaping整體出售:

{% autoescape off %} 
blah {{myvariable}} blah {{myothervariable}} 
{% endautoescape %} 
+0

+1 Nice answer! – 2010-08-23 21:06:24

+0

我有這樣的:{{內容|安全}} 後來我得到一個錯誤: 「在/ web_auto/call_mechanize_script TemplateSyntaxError/ 無法解析某些字符:內容| ||安全」 – Rick 2010-08-23 21:10:00

+0

的{%autoescape關閉%}工作正常..謝謝你,所以我給你正確的答案,不知道爲什麼它不會爲其他方式工作 – Rick 2010-08-23 21:20:56

5

看看「安全」過濾器,禁用Django默認的轉義:

http://docs.djangoproject.com/en/1.2/ref/templates/builtins/#safe

+0

哦確定因此多數民衆贊成什麼做..感謝,將檢查出來 – Rick 2010-08-23 20:56:46

+0

任何人都可以用的語法,我看到它說,有關安全,幫助,但我想不通的語法,我嘗試{{myvariable safe}}和其他一些東西,但它不起作用 – Rick 2010-08-23 21:01:46

+0

嘗試'{{var | safe}}' – 2010-08-23 21:05:19