所以基本上我正在使用Bottle为Python编写Web应用程序。但是我遇到了一个非常奇怪和令人沮丧的错误:每当我尝试通过代码放置任何HTML代码时,它就会将它们转换为HTML实体。在这里,我更好地让代码解释:
def fillFlist():
files = os.listdir('Files/FS/')
tFlist = []
for item in files:
tFlist.append('<tr><td>')
tFlist.append(item)
tFlist.append('</td><td>')
tFlist.append('<a href="localhost/delete/' + item + '">Delete</a></td></tr>')
tempO = ''
tempI = tempO.join(tFlist)
print(tempI)
return tempI
基本上有一个系统会遍历文件并为每个文件创建一个表行,并且还添加了一个删除文件的链接。然后你可以看到加入表来创建一个字符串,然后将这个字符串插入到HTML中以创建一个表,但是我最终得到了这个表:
<tr><td>test.txt</td><td><a href="localhost/delete/hello.txt">Delete</a></td></tr>
在页面上直接和原始。我一直在谷歌搜索试图解决这个问题,但什么也没有产生。一些额外的说明可以帮助您:
Cookie = request.get_cookie('uploaded')
Flist = fillFlist()
return template(loadHTML('index.html'), flist=Flist, cookie=Cookie)
这基本上是什么意思是将表插入到HTML文件中,通过这样做:
{{flist}}
基本上,我把它放在HTML代码中的任何地方,上面的模板需要一个字符串放在其位置,因此无论何时加载页面,该字符串中的任何内容都放在{{varname}的任何地方是的。
祝你好运,谢谢你!
编辑1:
我还发现它根本没有在我的代码中进行转换,所以它在网页上的转换时就被转换了?我不知道,我猜,这就是我在这里的原因。
编辑2:
我解决了这个问题,当我将HTML代码行解析到网页时(使用{{varname}}方法),它将特殊字符转换为实体。因此,经过一整天的键盘操作,尝试不同的方法,我使用一些基本的文件I / O和一些iFrame修复了这个问题。但谢谢你们的回应!很高兴看到stackoverflow能够快速响应!
答案 0 :(得分:2)
不使用像瓶子这样的外部库,你可以使用标准的python来实现这一点(我认为只要你的目的得到解决,它就会有所作为)
您可以使用标准库中的Html解析器 this page
>>> import HTMLParser
>>> h = HTMLParser.HTMLParser()
>>> print h.unescape('£682m')
£682m
EDIT for Python 3: the HTMLParser module has been renamed to html.parser.
>>> import html.parser
>>> h = html.parser.HTMLParser()
>>> print(h.unescape('£682m'))
£682m