gpt4 book ai didi

python - 我应该使用哪个,为什么?有关系吗? SafeUnicode 还是 django.utils.safestring.mark_safe()?

转载 作者:行者123 更新时间:2023-11-28 22:06:51 26 4
gpt4 key购买 nike

假设我有一个带有一些 HTML 的自定义表单标签,如下所示:

SafeUnicode('<span class="superscript">&trade;</span>')

为什么 Django 1.2 会有一个函数 mark_safe 如果存在的话?有什么区别?

感谢您的帮助!

最佳答案

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) 会更快一点,但如果你可能要处理一个类型和不支持传递给 SafeUnicode 初始值设定项的值(例如,带有非 ascii 代码的字节字符串、非字符串、带有字符串委托(delegate)的 Promise ,...)。如果您 100% 确定自己知道自己在做什么,那么没有什么能阻止您采用纳秒级节省方法;-)。

顺便说一句,关于开源代码的一些问题(无论文档多么完善,Django 的文档确实令人印象深刻)通常最好先看一下代码(然后询问代码是否太复杂或太复杂)微妙地遵循保证)。

关于python - 我应该使用哪个,为什么?有关系吗? SafeUnicode 还是 django.utils.safestring.mark_safe()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com