webp2y XML 帮助清理 python3 下的换行符
webp2y XML helper sanitize line breaks under python3
在我的 web2py 应用程序中,我正在处理一个项目列表,用户可以在其中为每个项目单击 link 以 select。一个项目有一个 UUID、一个标题和一个描述。为了更好地定位,项目描述也显示为 link 标题。为了防止描述中的标签注入和转义标签,我使用了 XML 消毒剂,如下所示:
A(this_item.title, \
callback = URL('item', 'select', \
vars=dict(uuid=this_item.uuid), user_signature=True), \
_title=XML(str_replace(this_item.description, {'\r\n':' ', '<':'<', '>':'>'}), sanitize=True))
使用 Python2 一切都很好。由于我已经切换到 Python 3 我有以下问题。当描述包含换行符时,消毒剂不再起作用。例如,由我的 str_replace 例程生成的以下字符串可以被 XML 助手在 Python 2 下但在 Python 3:
下进行清理
Header Line1 Line2 Line3
清理由
转义的换行符是 Python 3 的问题(但 Python 2 没有)。 XML 帮助程序清理的其他一切都没有问题(例如,小于或大于,我需要这些,因为如果没有描述,它将生成为 <no description>
)。
Python3 下的 XML 帮助程序 运行 web2py 如何清理换行符?
感谢大家的支持!
此致
克莱门斯
这是因为 python 的 HTMLParser class 在 3.4 和 3.5 之间发生了变化,其中 convert_charrefs 开始默认为 True:
我认为您的 web2py yatl 源中的以下修复应该更正它:
https://github.com/web2py/yatl/compare/master...timnyborg:patch-1
在我的 web2py 应用程序中,我正在处理一个项目列表,用户可以在其中为每个项目单击 link 以 select。一个项目有一个 UUID、一个标题和一个描述。为了更好地定位,项目描述也显示为 link 标题。为了防止描述中的标签注入和转义标签,我使用了 XML 消毒剂,如下所示:
A(this_item.title, \
callback = URL('item', 'select', \
vars=dict(uuid=this_item.uuid), user_signature=True), \
_title=XML(str_replace(this_item.description, {'\r\n':' ', '<':'<', '>':'>'}), sanitize=True))
使用 Python2 一切都很好。由于我已经切换到 Python 3 我有以下问题。当描述包含换行符时,消毒剂不再起作用。例如,由我的 str_replace 例程生成的以下字符串可以被 XML 助手在 Python 2 下但在 Python 3:
下进行清理Header Line1 Line2 Line3
清理由
转义的换行符是 Python 3 的问题(但 Python 2 没有)。 XML 帮助程序清理的其他一切都没有问题(例如,小于或大于,我需要这些,因为如果没有描述,它将生成为 <no description>
)。
Python3 下的 XML 帮助程序 运行 web2py 如何清理换行符?
感谢大家的支持!
此致 克莱门斯
这是因为 python 的 HTMLParser class 在 3.4 和 3.5 之间发生了变化,其中 convert_charrefs 开始默认为 True:
我认为您的 web2py yatl 源中的以下修复应该更正它: https://github.com/web2py/yatl/compare/master...timnyborg:patch-1