2010-06-05 55 views

回答

4

mark_safe是工廠函數包封位類型檢查邏輯的,以便返回,只要合適,可以一個SafeUnicodeSafeString(或可能的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的文檔是否真的令人印象深刻)通常通過先查看代碼(然後詢問代碼是否太複雜或微妙地跟隨保證)。

+2

查看源代碼+1。當常規文檔無法解釋某些內容時,Django的源代碼提供了非常好的文檔。 Python非常易讀。 – 2010-06-05 01:13:24

+0

謝謝你如此徹底而簡潔地回答我的問題。我也很感謝你的寶貴意見。這很像我最喜歡的諺語之一:「給一個人一條魚,你喂他一天,教一個人釣魚,你給他一輩子」 – mkelley33 2010-06-05 01:47:39

+0

保羅,+1支持。我愛Python。它的可讀性和優秀的社區只是我最近從C#和ASP.NET切換到Django和Python的許多原因中的兩個:)再次感謝! – mkelley33 2010-06-05 01:51:15

相關問題