如何避免在瓶子python web框架中转义html字符?

2024-06-25 23:27:21 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

如何防止Bottle - Python Web Framework中的转义字符?在

背景

我正在用瓶子(python)制作一个歌曲歌词网络应用程序,在将数据插入数据库之前,我测试所有数据是否正确,因此,目前,我基本上有一个表单,有“歌曲名”,“艺术家”,“歌词”(在文本区),就这样。在

当表单提交时,它会加载一个包含上面提到的三个输入值(song、artist和lysts)的页面,一切正常,但是歌词的html被转义(在将歌词发送到模板之前,我将所有的\n替换为<br>)。在

所以我在this tutorial from bottlepy.org上做了研究,发现瓶子会逃过html标记以防止XSS攻击,您可以通过添加“!”来禁用它在变量名之前,太棒了!我找到了解决办法,但是。。。当我试图使用它时,它抛出了一个错误:

错误-Screenshot of Error on computer

Exception:

SyntaxError('invalid syntax', ('H:\\Server\\htdocs\\letras\\prueba.tpl', 4, 27, "u'<div>Letra: ', _escape( !letra['letra'] ), u'</div>'])\n"))

Traceback (most recent call last):
    File "H:\Server\htdocs\letras\bottle.py", line 764, in _handle
      return route.call(**args)
    File "H:\Server\htdocs\letras\bottle.py", line 1575, in wrapper
      rv = callback(*a, **ka)
    File "index.py", line 41, in guardar_letra
      return template('prueba.tpl', letra = data)
    File "H:\Server\htdocs\letras\bottle.py", line 3117, in template
      return TEMPLATES[tplid].render(kwargs)
    File "H:\Server\htdocs\letras\bottle.py", line 3090, in render
      self.execute(stdout, kwargs)
    File "H:\Server\htdocs\letras\bottle.py", line 3078, in execute
      eval(self.co, env)
    File "H:\Server\htdocs\letras\bottle.py", line 185, in __get__
      value = obj.__dict__[self.func.__name__] = self.func(obj)
    File "H:\Server\htdocs\letras\bottle.py", line 2977, in co
      return compile(self.code, self.filename or '<string>', 'exec')
    File "H:\Server\htdocs\letras\prueba.tpl", line 4
      u'<div>Letra: ', _escape( !letra['letra'] ), u'</div>'])
                                ^
  SyntaxError: invalid syntax

在索引.py-gist on github

^{pr2}$

HTML模板-gist on github

<h1>Letra de {{ letra['titulo'] }}</h1>
<h2>Por: {{ letra['artista'] }}</h2>
<div>Fecha: {{ letra['Fecha_envio'] }}</div>
<div>Letra: {{ !letra['letra'] }}</div>

下面是如果我让瓶子从我的歌词html中逃逸的话,它的工作/外观(注意<br>是如何显示为纯文本的):

http://i.stack.imgur.com/fxz7o.png

最后,这就是它应该看起来的样子

http://i.stack.imgur.com/6b58J.png


Tags: inpyselfdiv瓶子bottlereturnserver