字符串在Plone python脚本中转义

时间:2011-03-10 18:31:30

标签: python escaping plone

我创建了一个portlet产品,以配合外部聊天系统。我使用带有WYSIWYGWidget(以及其他)和portal_properties的configlet来保存一些属性。

给我一​​个问题的是我将这些属性值传递给auto_popup.js.pt并让javascript创建一个延时弹出窗口,其中WYSIWYGWidget的内容是弹出文本,但是如果有一个换行符标签之间的WYSIWYGWidget的html导致我的javascript中出错。我可以通过转到portal_properties并手动删除换行符(在字符串字段中显示为空格)来解决这个问题,但这不是重点。

我一直在使用的解决方案是使用python脚本将html从属性字段(已转义)转换为标准html&也删除换行符。对脚本的调用完美无缺,脚本在测试中完美运行,但由于某种原因,当它从portal_properties调用特定对象时,它将无法工作。

在下面的代码中,我已经评论了我正在使用的属性的实际值以用于测试目的。当在plone中运行时,唯一经过的替换是将“welcome”替换为“hello”,但是如果你使用注释掉的值,则整个过程都有效。

任何建议都将不胜感激。

from Products.CMFCore.utils import getToolByName

properties = getToolByName(context, 'portal_properties')
chatMessage = properties.chat_properties.chat_message

# chatMessage = '''<h2 style="text-align: center; ">Welcome</h2>
# <h3 style="text-align: center; ">Would you like to talk to Keith?</h3>'''

chatMessage = chatMessage.replace(">", ">")
chatMessage = chatMessage.replace("&lt;", "<")
chatMessage = chatMessage.replace("&amp;", "&")
chatMessage = chatMessage.replace("> <", "><")
chatMessage = chatMessage.replace('>\n<', '><')
chatMessage = chatMessage.replace('Welcome', 'Hello')

#print chatMessage
return chatMessage

2 个答案:

答案 0 :(得分:1)

使用urllib.quote()和urllib.unquote()自动替换转义序列

答案 1 :(得分:1)

尝试:

from Products.PythonScripts.standard import url_unquote
chatMessage = url_unquote(properties.chat_properties.chat_message)