假设我有与它的一些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