python的WEB框架Bottle,它的默认模板好像不直接支持变量含有HTML标记,

比如 一个变量,test='''<span style="font-size:24px;color:#f546ff;">test</span>'''
当嵌入HTML模板里时,就会变成:
<span style="font-size:24px;color:#f546ff;">sgfszhfsz,</span>
而不是直接输出,应该怎么操作才能直接输出呀?
又错了,左边的< 变成 & lt; 右边的变成 & gt; 了
应该是被转码了,要怎么才能不被转码呀

第1个回答  2011-07-27
我的测试运行正常,以下是代码和运行结果,供你参考。python 2.7

源码:
from bottle import template
from bottle import route, run

@route('/:name')
def index(name='World'):
htmltext=template('Hello {{name}}!', name='''<span style="font-size:24px;color:#f546ff;">test</span>''')
return '<b>Hello %s!</b>' % htmltext

run(host='localhost', port=8080)

运行结果:
Hello Hello <span style="font-size:24px;color:#f546ff;">test</span>!!本回答被提问者采纳
第2个回答  2017-08-24
虽然过去了很多年,但是我觉得还是回答一下,给后来遇到的人提个醒,
bottle为了防止XSS攻击,所以所有html都转义成字符处理了,要想用html,请使用{{!name}}
官网例子:
>>> template('Hello {{name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
>>> template('Hello {{!name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
第3个回答  2017-10-23
HTML特殊字符转义自动防止XSS攻击。可以用感叹号启动表达式以禁用该表达式的转义:
>>> template('Hello {{name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
>>> template('Hello {{!name}}!', name='<b>World</b>')
u'Hello <b>World</b>!'
第4个回答  2011-07-28
用django的飘过.......

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网