假設我有與它的一些HTML像這樣的自定義窗體標籤:我應該使用哪種方法?爲什麼?有關係嗎? SafeUnicode或django.utils.safestring.mark_safe()?
SafeUnicode('<span class="superscript">™</span>')
爲什麼Django的1.2有一個功能mark_safe如果存在嗎?有什麼區別?
感謝您的幫助!
假設我有與它的一些HTML像這樣的自定義窗體標籤:我應該使用哪種方法?爲什麼?有關係嗎? SafeUnicode或django.utils.safestring.mark_safe()?
SafeUnicode('<span class="superscript">™</span>')
爲什麼Django的1.2有一個功能mark_safe如果存在嗎?有什麼區別?
感謝您的幫助!
mark_safe
是工廠函數包封位類型檢查邏輯的,以便返回,只要合適,可以一個SafeUnicode
或SafeString
(或可能的SafeData
一些其他子類應當已定義的任何這樣的子類)。該source很容易足夠短引述...:
89 def mark_safe(s):
90 """
91 Explicitly mark a string as safe for (HTML) output purposes. The returned
92 object can be used everywhere a string or unicode object is appropriate.
93
94 Can be called multiple times on a single string.
95 """
96 if isinstance(s, SafeData):
97 return s
98 if isinstance(s, str) or (isinstance(s, Promise) and s._delegate_str):
99 return SafeString(s)
100 if isinstance(s, (unicode, Promise)):
101 return SafeUnicode(s)
102 return SafeString(str(s))
剛開始使用的,而不是SafeUnicode(s)
將make_safe(s)
每分鐘要快,但可以給你帶來麻煩,如果你可能處理一個類型和值,唐」 t很高興地支持被傳遞給SafeUnicode
初始值設定項(例如,一個非ASCII碼字符串,一個非字符串,一個帶字符串委託的Promise
,...)。如果你100%確定自己知道自己在做什麼,那麼沒有什麼能阻止你採用納秒級的節能方法;-)。
順便說一下,關於開源代碼的一些問題(無論文檔有多好,以及Django的文檔是否真的令人印象深刻)通常通過先查看代碼(然後詢問代碼是否太複雜或微妙地跟隨保證)。
查看源代碼+1。當常規文檔無法解釋某些內容時,Django的源代碼提供了非常好的文檔。 Python非常易讀。 – 2010-06-05 01:13:24
謝謝你如此徹底而簡潔地回答我的問題。我也很感謝你的寶貴意見。這很像我最喜歡的諺語之一:「給一個人一條魚,你喂他一天,教一個人釣魚,你給他一輩子」 – mkelley33 2010-06-05 01:47:39
保羅,+1支持。我愛Python。它的可讀性和優秀的社區只是我最近從C#和ASP.NET切換到Django和Python的許多原因中的兩個:)再次感謝! – mkelley33 2010-06-05 01:51:15